gpt4 book ai didi

python - Django 非阻塞电子邮件? threading.thread 或子进程的缺点?

转载 作者:太空狗 更新时间:2023-10-30 00:46:42 26 4
gpt4 key购买 nike

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

当用户数量超过 20 时,请求周期可能会增加 1-3 秒,这是我不喜欢的。我希望能够从非阻塞功能发送电子邮件。

我知道结合使用 RabbitMQ 和 Celery 可以解决这个问题,但是对于 200 个用户来说,这似乎是过度设计,而且它又增加了两个我必须安装、理解和维护的应用程序。

我做了一些研究,似乎 threading.Thread 和 subprocess 都是包装非阻塞调用的方法。我是否缺少一种明显的方法来做到这一点?使用 threading.thread 或 subprocess 方法有缺点吗?

谢谢,泰德

最佳答案

将工作卸载到其他一些外部进程确实是正确的做法,而且一旦完成,就不太可能是最后一次这样做。 Celery/RabbitMQ 是一个不错的解决方案,好消息是它们已经存在了。最近的 RabbitMQ 版本有一个不错的基于 Web 的管理应用程序和一个不错的管理 API,这将使保姆变得非常容易,而且 celery 在 Django 应用程序中工作得很好。

您可以使用子进程或线程来做到这一点,但老实说,我认为这是一个不好养成的习惯。不幸的是,如果您不想卸载某些东西,它们是做您想做的事情的最直接的方法。

如果你想完全“贫民区异步电子邮件”,你可以让你的应用程序只是将电子邮件转储到目录中的文件,并让一个 cron 作业每分钟检查该目录中该目录中的文件,并将它们作为电子邮件发送出去,但实际上这比兔子/ celery 要多得多。

我说只配兔子/ celery 。工作并不像看起来那么多,但值得继续前进。

关于python - Django 非阻塞电子邮件? threading.thread 或子进程的缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5877658/

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