2012-05-24 28 views
1

週期性任務我不知道事情是如何結合在一起..Celerybeat - 使用Django

我對此anounce獲獎者等有效的廣告活動的工具軟件,併發出提醒的活動。 該活動是用django創建的,在活動模型中,我有一個字段說每隔X天或每週或每小時通知獲獎者。因此,對於這項運動,必須每週五宣佈獲勝者。這是每個廣告系列,可能會有多個廣告系列具有不同的獲勝者和提醒設置。

我不知道從哪裏開始celerybeat任務?應該保存模型嗎?但是如果你改變了一些東西並再次保存模型呢?它會不會創建另一個任務,然後導致發送2個或更多提醒等?

+0

就我個人而言,我發現芹菜難以安裝且不可靠。除非您需要在分佈式架構中執行任務,否則我強烈推薦通過cron調度週期性任務。 – Cerin

回答

2

Celerybeat是一個守護進程,它應該永久(有像supervisord這樣的東西)run in the background。鑑於您最短的提醒延遲時間是一個小時,它應該每小時運行一次任務。

該任務應該檢查所有的活動,並根據數據庫中的數據決定應該發送的提醒。爲了方便起見,我建議您在發送提醒時下次計算並保存提醒。這樣下一次,列出要發送的提醒將如列出所有逾期提醒一樣簡單。