gpt4 book ai didi

linux - 定期运行的发送电子邮件应用程序的设计模式?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:19:34 26 4
gpt4 key购买 nike

我正在开发一项功能,允许用户将电子邮件配置为在他选择的时间发送。一旦用户保存了他的配置,每天都会在配置的时间发送一封电子邮件,直到他停用或删除该配置。不同时间可以有多种配置。

到目前为止,我正在做这样的事情:

  • 每 10 分钟运行一次 cron 作业。
  • 查找将在(现在 - 10 分钟)内执行的电子邮件配置。
  • 发送这些电子邮件并更新状态日志。

这曾经工作得很好,但有一些缺陷:

在交集时间配置的电子邮件有时不会发送,例如 02:00。由于部署或高 CPU 使用率,cron 根本没有运行。

在这两种情况下,丢失的电子邮件在接下来的 24 小时内不会被再次拾取。

我应该如何设计一个稳健的系统来保证所有电子邮件都已发送?

如果重要的话,我正在使用 Django 和 linux 机器。

最佳答案

您解决方案的下一步是控制谁失败了,但您将重新发明轮子

因此,您的问题有一个称为任务队列的解决方案模式。它是一个管理任务生命周期的应用程序,允许您:

  • 跟踪正在运行或失败的任务;
  • 重试任务;
  • 管理任务的优先级;
  • 管理执行流程;
  • 为每个主题创建不同的队列;

通过任务队列,您可以将管理任务的应用程序与执行这些任务的应用程序分开。

使用 celery,您可以拥有一台运行 redis 的轻型机器,称为 broker,另一台机器运行您的任务,称为 worker。

看看 first steps , Celery 将成为你的冠军!!!

关于linux - 定期运行的发送电子邮件应用程序的设计模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45482707/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com