用户指定时间的Django cron-job

时间:2015-12-14 05:18:21

标签: django cron rabbitmq celery

我想根据用户指定的时间发送通知。 IE浏览器,在谷歌日历中,我可以在任务时间被点击时收到短信。

这个解决方案是运行一个cron作业,让它每分钟执行一次并扫描哪些用户的时间等于当前时间?

1 个答案:

答案 0 :(得分:0)

由于您使用celery标记了您的问题,我假设您正在运行芹菜。您可以使用eta kwarg apply_async()来安排任务在特定时间运行,请参阅此处:

http://docs.celeryproject.org/en/latest/userguide/calling.html#eta-and-countdown

如果您需要使用cron作业,我不会检查是否notification_time == current_time,而是在模型上使用布尔is_sent字段跟踪未发送的通知,并检查notification_time <= current_time and not is_sent。这似乎略微不易出错。您还可以添加某种形式的检查,以防止大量发送通知,以防您的系统停机几个小时。