2012-05-24 23 views
1

周期性任务我不知道事情是如何结合在一起..Celerybeat - 使用Django

我对此anounce获奖者等有效的广告活动的工具软件,并发出提醒的活动。 该活动是用django创建的,在活动模型中,我有一个字段说每隔X天或每周或每小时通知获奖者。因此,对于这项运动,必须每周五宣布获胜者。这是每个广告系列,可能会有多个广告系列具有不同的获胜者和提醒设置。

我不知道从哪里开始celerybeat任务?应该保存模型吗?但是如果你改变了一些东西并再次保存模型呢?它会不会创建另一个任务,然后导致发送2个或更多提醒等?

+0

就我个人而言,我发现芹菜难以安装且不可靠。除非您需要在分布式架构中执行任务,否则我强烈推荐通过cron调度周期性任务。 – Cerin

回答

2

Celerybeat是一个守护进程,它应该永久(有像supervisord这样的东西)run in the background。鉴于您最短的提醒延迟时间是一个小时,它应该每小时运行一次任务。

该任务应该检查所有的活动,并根据数据库中的数据决定应该发送的提醒。为了方便起见,我建议您在发送提醒时下次计算并保存提醒。这样下一次,列出要发送的提醒将如列出所有逾期提醒一样简单。