2015-05-22 45 views
1

簡短說明製作Django應用程序在特定的時間通知人

我怎樣才能讓我的應用程序發送通知的人員名單的時間量之後,一個事件已經被創造出來的?

長描述

我的網站允許鮑勃把東西他想在網上賣。有幾個人看到它並想要購買它。如果6個小時後沒有人有興趣,應通過電子郵件通知賣方。

解決方案我發現,我覺得髒

運行crontab的每一分鐘來檢查的人不是在interesed整個文章缺點:不是太準確+掃描整個數據庫+外部到我的應用程序...

有更好的解決方案嗎?

+0

我想你不會逃避的crontab。 1分鐘的時間間隔是否不能滿足您的要求?如果用戶已經在查看頁面,則可以使用js和ajax請求(eBay出價樣式)來微調更新。 – Wtower

+0

您是否檢查過http://engineering.hackerearth.com/2013/06/05/scheduling-emails-with-celery-in-django/?如果你有某種索引,你也不必掃描整個數據庫。 –

+0

@寬闊的1分鐘間隔顯然不如準確運行的時間準確。其實我希望我的應用程序能夠以正確的方式運行,即使在沒有人的情況下 – smarber

回答

4

你所尋找的是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

+0

哇,django_cron看起來很有趣。接得好! –

+0

我認爲可以從這個包中丟失的唯一東西就是自給自足,還需要從Django之外的cron開始運行。呃,好吧 –

2

作爲選項1,您可以編寫將由crontab使用的custom management command

選項2(實際上也涉及到cron的工作)是使用芹菜或類似的工具(在你的情況下,我更喜歡選項1)。

請隨時提問,我會更新我的答案

相關問題