我正在开发一项功能,允许用户配置要在他选择的时间发送的电子邮件。 用户保存配置后,将在配置的时间每天发送一封电子邮件,直到他停用或删除该配置。可以有许多不同时间的配置。
到目前为止,我正在做这样的事情:
这曾经很好地工作但很少有陷阱:
有时候不会发送在交叉时间(如02:00)配置的电子邮件。由于部署或高CPU使用率,cron根本没有运行。
在这两种情况下,错过的电子邮件都不会在接下来的24小时内再次被选中。
我应该如何设计一个可以保证发送所有电子邮件的强大系统?
如果重要的是我使用Django和Linux机器。
答案 0 :(得分:0)
解决方案的下一步是控制谁失败,但你要重新发明轮子
因此,您的问题有一个名为Task Queue的解决方案模式。它是一个管理任务生命周期的应用程序,允许您:
通过任务队列,您可以将管理任务的应用程序与执行这些任务的应用程序分开。
使用celery你可以有一台运行redis的轻型机器叫做broker,另一台运行你的任务叫做worker。
看看first steps,Celery将成为你的冠军!!!