【发布时间】:2018-01-10 23:16:54
【问题描述】:
我正在开发一项功能,该功能允许用户配置在他选择的时间发送电子邮件。 用户保存配置后,将在每天配置的时间发送一封电子邮件,直到他停用或删除该配置。可以有很多不同时间的配置。
到目前为止,我正在做这样的事情:
- 每 10 分钟运行一次 cron 作业。
- 查找要在(现在 - 10 分钟)内执行的电子邮件配置。
- 发送这些电子邮件并更新状态日志。
这曾经运行良好,但几乎没有陷阱:
在 02:00 等交叉点配置的电子邮件有时不会发送。由于部署或 CPU 使用率高,cron 根本没有运行。
在这两种情况下,错过的电子邮件在接下来的 24 小时内都不会再次被选中。
我应该如何继续设计一个强大的系统来保证所有电子邮件都被发送?
如果重要的话,我正在使用 Django 和 linux 机器。
【问题讨论】:
-
你看过celery吗?他们有一个periodic tasks。
-
@ClaudioSantos 还是会和 crons no 有同样的问题?
-
主要区别在于任务将由任务队列管理,因此您知道哪个任务失败了。 Task retry
-
如何将“at”与 cron.daily 集成?所以把所有设置放在一个配置文件中,然后从 cron.daily 操作批处理作业队列。
标签: linux django cron scheduled-tasks