如何排队计划的操作

时间:2013-04-08 01:58:25

标签: python django heroku celery django-celery

我正在尝试为一个带有芹菜的Django应用程序设置一些计划任务,托管在heroku上。除了不知道应该如何配置所有内容之外,最好的方法是什么?

假设用户可以选择在他们选择的时间收到每日电子邮件。

我是否应该有一个每周运行的预定工作,比如5分钟。查找当时想要通过电子邮件发送的每个用户,然后关闭电子邮件?

OR

为每个用户设置他们的偏好时安排任务。 (不知道我将如何实际实现这一点)

2 个答案:

答案 0 :(得分:1)

这取决于您需要多少精确度。您是否希望用户选择时间到分钟?第二?或者允许他们选择他们希望通过电子邮件发送的小时数。

如果时间足够准确,那么请使用轮询用户每小时邮寄的任务。

如果您的用户需要邮件精确到秒,那么为每个用户设置一个任务,以便在第二天完成。

介于两者之间的一切都取决于个人选择。你做得更舒服,甚至更重要的是:什么能产生最简单的代码并使用最少的失败模式

答案 1 :(得分:0)

我建议第一个选项(查找优秀工作的预定工作) - 更容易扩展和管理。如果你有1000个用户怎么办 - 这就是发送电子邮件的很多任务。

如果您将数据库用作芹菜代理,则可以使用django-celery内置的类似cron的调度,这将允许您动态创建和销毁任务。不过,我不喜欢将DB用于我的经纪人。

另外,您可能需要查看chronos