我正在运行django应用程序,当某些事件发生时,我想将电子邮件发送给收件人列表。
我知道使用Celery是一个明智的选择,但我想知道是否还有另一个最简单的方法,无需安装代理服务器,主管来处理在后台运行的守护程序进程。 ..
我想找到一种更简单的方法,并在需要时将其改为芹菜。我不负责生产服务器,我知道运行它的人会遇到很大的麻烦,所有的配置都能正常运行。我正在考虑触发一个django命令,该命令使用多处理库或类似的东西打开几个进程。
答案 0 :(得分:0)
这通常是队列的一个很好的用例。如果您不想在本地运行队列服务器(如Celery),则可以选择几个选项。
有许多SaaS队列服务,例如Amazon SQS(以及任何其他数量)可以挂钩到您的应用程序,而无需在您的计算机上运行其他服务。
您可以使用数据库和cron作业实现一种“穷人的队列”。在这种情况下,当您的事件发生时,您可以将一些信息插入数据库。然后,您可以通过management command启动cron作业,扫描您的“排队消息”表并定期发送电子邮件。请注意,只有当您的消息队列保持相对较小时,这才真正起作用 - 如果要发送的消息太多,您将开始考虑让多个进程发送消息,从而打开排队系统的蠕虫病毒。意思是首先解决。
答案 1 :(得分:0)
如果您不想实施芹菜(在我看来设置起来并不是非常困难),那么您最好的选择可能是使用您的数据库实现一个非常简单的队列。它可能会按照以下方式工作:
这将负责异步发送对象并在出现问题时跟踪所有电子邮件的状态。
如果其他更新对您的数据库过于沉重,您可能会使用Redis后端作为您的队列。