1

我不确定事情如何组合在一起..

我有一个包含活动活动的应用程序,可以宣布获胜者等,并为活动发送提醒。该活动是用 django 创建的,在活动模型中,我有一个字段,表示每 X 天、每周或每小时通知一次获胜者。因此,对于本次活动,获奖者必须在每周五公布。这是每个广告系列,可能有多个广告系列具有不同的获胜者和提醒设置。

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

4

1 回答 1

2

Celerybeat 是一个守护进程,它应该永久在后台运行(使用类似 supervisord 的东西)。鉴于您的最短提醒延迟是一个小时,它应该每小时运行一个任务。

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

于 2012-05-24T13:39:49.753 回答