Skip to main content
 首页 » 编程设计

python之使用 Django send_mail 方法发送邮件非常慢

2024年11月01日30jyk

我每天使用django (1.5.2) 发送邮件。在大约 2/3 分钟的间隔内大约 100 次。

直到最近我才真正遇到任何问题(这是可能的,因为我升级到 1.5.2)。现在发送这些邮件有时需要长达 2 小时(!)。

发生的情况是,我有最多 5 个线程尝试使用 send_mail 方法 ( https://docs.djangoproject.com/en/dev/topics/email/#send-mail) 发送邮件。线程完成后,将创建一个新线程,执行一些工作然后发送邮件。发送邮件时,他们都“停止”(或死锁或其他)有时几分钟,有时几小时,直到最后他们发送邮件并且一切都恢复正常(下一个线程快速发送他们的邮件)。

我使用 postfix 和一个 gmail 帐户作为邮件服务器。当只发送一封邮件时(在 django shell 中或线程在另一个小时发送一封邮件时)没有问题(邮件会立即发送)。每个 send_mail 调用都是由大约 4 个收件人完成的,所以大约是 100 ~ 4 * 25。

最后,在查看 mail.info 日志时,每个日志都带有邮件实际发送时间的时间戳,这可能表明问题出在 django 上?

问题是我不知道如何调试它,我应该在哪里查看,以及问题是来自 django 还是 gmail。任何建议将不胜感激。

谢谢!

请您参考如下方法:

也许成立Celery而不是线程?

您也可以使用像 SendGrid 这样的电子邮件服务而不必担心邮寄的负担。只需通过 REST 或使用 SMTP 访问他们的 API