我正在运行一个 django 应用程序,当发生某些事件时,我想向收件人列表发送电子邮件。
我知道使用 Celery 将是一个明智的选择,但我想知道是否有另一种最简单的方法来做到这一点,而无需安装代理服务器、主管来处理后台运行的守护进程......
我想找到一种更简单的方法来做到这一点,并在需要时将其更改为 celery。我不负责生产服务器,我知道运行它的人在设置所有配置以工作时会遇到很大的麻烦。我正在考虑触发一个 django 命令,该命令使用多处理库或类似的东西打开多个进程。
我正在运行一个 django 应用程序,当发生某些事件时,我想向收件人列表发送电子邮件。
我知道使用 Celery 将是一个明智的选择,但我想知道是否有另一种最简单的方法来做到这一点,而无需安装代理服务器、主管来处理后台运行的守护进程......
我想找到一种更简单的方法来做到这一点,并在需要时将其更改为 celery。我不负责生产服务器,我知道运行它的人在设置所有配置以工作时会遇到很大的麻烦。我正在考虑触发一个 django 命令,该命令使用多处理库或类似的东西打开多个进程。
如果您不想实现 celery(在我看来设置起来并不难),那么您最好的选择可能是使用您的数据库实现一个非常简单的队列。它可能会按照以下方式工作:
这将负责异步发送对象并在出现问题时跟踪所有电子邮件的状态。
如果额外的更新对您的数据库也过于繁重,您可能会为您的队列使用 Redis 后端。
这通常是队列的一个很好的用例。如果您不想在本地运行队列服务器(如 Celery),您有几个选择。
有许多 SaaS 队列服务,例如Amazon SQS(以及任何数量的其他服务),您可以将它们挂接到您的应用程序中,而无需在您的机器上运行其他服务。
您可以使用数据库和 cron 作业实现一种“穷人队列”。在这种情况下,当您的事件发生时,您可以将一些信息塞入您的数据库中。然后,您可以让一个 cron 作业触发一个管理命令,该命令扫描您的“排队消息”表并定期发送电子邮件。请注意,这仅在您的消息队列保持相对较小的情况下才有效——如果您要发送这么多消息,您将开始考虑让多个进程发送消息,这会打开排队系统的蠕虫罐头意在第一时间解决。