Django smtp电子邮件后端降低了性能

问题描述 投票:0回答:2

我正在本地开发/服务。

我正在使用django-admin为内部用户添加项目。

我添加了我的信号代码。我的信号是post_save,其目的是向用户发送电子邮件以供批准。我使用console.EmailBackend测试我的信号

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

我添加了一个新项目,对Web浏览器没有性能影响。我的模型项目页面快速重新加载。

我更新了我的EMAIL BACKEND以使用smtp详细信息

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

我添加了一个新项目,性能影响很大,我的网页浏览器现在需要15-30秒才能在添加后重新加载项目页面。

有关为什么表演如此可怕的任何想法?

django django-admin django-signals django-email
2个回答
2
投票

真正的电子邮件发送速度很慢。

我建议使用异步队列任务发送电子邮件。例如,Celery是asynchronous Queue task的好图书馆。


1
投票

如果您计划在AWS或类似设备上运行应用程序,请考虑使用电子邮件发送服务(例如AWS的SES)。它将允许您设置发件人验证(DKIM / SPF),它将是一个低延迟的API调用,而不是缓慢的SMTP交互。如果您计划使用AWS,则可以使用lib,django-ses,您可以配置它并立即开始使用。

如果您想继续自己发送电子邮件,请使用celerychannels设置异步任务队列和worker。这个延迟将让您的Web工作人员继续提供请求,而工作人员完成缓慢的发送过程。

如果您想要一个非常快速的设置,您可以结合上述两种方法,将电子邮件发送到异步工作者,然后命中电子邮件即服务API。您的Web工作人员将很快,并且您的异步工作人员不会被阻止与SMTP服务器通话10-15秒!

© www.soinside.com 2019 - 2024. All rights reserved.