我怎樣才能讓我的應用程序發送通知的人員名單的時間量之後,一個事件已經被創造出來的?
長描述
我的網站允許鮑勃把東西他想在網上賣。有幾個人看到它並想要購買它。如果6個小時後沒有人有興趣,應通過電子郵件通知賣方。
解決方案我發現,我覺得髒
運行crontab的每一分鐘來檢查的人不是在interesed整個文章缺點:不是太準確+掃描整個數據庫+外部到我的應用程序...
有更好的解決方案嗎?
我怎樣才能讓我的應用程序發送通知的人員名單的時間量之後,一個事件已經被創造出來的?
長描述
我的網站允許鮑勃把東西他想在網上賣。有幾個人看到它並想要購買它。如果6個小時後沒有人有興趣,應通過電子郵件通知賣方。
解決方案我發現,我覺得髒
運行crontab的每一分鐘來檢查的人不是在interesed整個文章缺點:不是太準確+掃描整個數據庫+外部到我的應用程序...
有更好的解決方案嗎?
你所尋找的是https://pypi.python.org/pypi/django-cron/0.3.6
從本質上講,您可以使用django_cron在INSTALLED_APPS作爲
INSTALLED_APPS = (
'django_cron',)
設置一個通過在您的項目中創建一個cron.py來執行cron作業
class SixHourEmailUpdate(CronJobBase):
code = 'six_hour_reminder_cron'
schedule = Schedule(run_every_mins = 360) # 6 hours
def do(self):
# Your email sending
你也必須設置一個cron作業,每隔一段時間運行一次。
*/5 * * * * bash /home/tester/my_cron/cron.sh
的cron.sh依次調用
python /home/tester/app/my_app/manage.py runcrons
更多的文檔這裏 http://django-cron.readthedocs.org/en/latest/sample_cron_configurations.html#run-at-times-feature
哇,django_cron看起來很有趣。接得好! –
我認爲可以從這個包中丟失的唯一東西就是自給自足,還需要從Django之外的cron開始運行。呃,好吧 –
作爲選項1,您可以編寫將由crontab使用的custom management command。
選項2(實際上也涉及到cron的工作)是使用芹菜或類似的工具(在你的情況下,我更喜歡選項1)。
請隨時提問,我會更新我的答案
我想你不會逃避的crontab。 1分鐘的時間間隔是否不能滿足您的要求?如果用戶已經在查看頁面,則可以使用js和ajax請求(eBay出價樣式)來微調更新。 – Wtower
您是否檢查過http://engineering.hackerearth.com/2013/06/05/scheduling-emails-with-celery-in-django/?如果你有某種索引,你也不必掃描整個數據庫。 –
@寬闊的1分鐘間隔顯然不如準確運行的時間準確。其實我希望我的應用程序能夠以正確的方式運行,即使在沒有人的情況下 – smarber