Django非阻止电子邮件?缺少threading.thread或subprocess?

Ted*_*Ted 5 python django multithreading

我有一个django网站.最终用户的某些操作会向组中的其他用户发送电子邮件.

当用户数量大于20时,它可以在请求周期中增加1-3秒,这是我不喜欢的.我希望能够从非阻止功能发送电子邮件.

我知道RabbitMQ和Celery可以解决这个问题,但有200个用户似乎过度工程,它增加了两个我必须安装,理解和保姆的应用程序.

我已经做了一些研究,看起来两个线程.线程和子进程都是包装非阻塞调用的方法.我错过了一个明显的方法吗?使用threading.thread或subprocess方法有缺点吗?

谢谢,特德

jon*_*esy 9

将工作卸载到其他外部进程是非常正确的事情,一旦你完成它,它可能不是你最后一次这样做.Celery/RabbitMQ是一个不错的解决方案,好消息是它们已经存在.最近的RabbitMQ版本有一个不错的基于网络的管理应用程序和一个体面的管理API,这将使保姆很容易,而芹菜在Django应用程序中工作得很好.

你可以用子进程或线程来做到这一点,但说实话,我认为这是一个不好的习惯.不幸的是,如果你不想卸载东西,它们是你做你想做的最简单的方法.

如果你想完全去"ghetto异步电子邮件"你可以让你的应用程序只是将电子邮件转发到目录中的文件并让cron作业每分钟检查该目录中的文件目录,并将其作为电子邮件发送出去,但实际上是比兔子/芹菜更多的工作.

我说跟兔子/芹菜一起去吧.这并不像看起来那么多,它值得继续前进.