【问题标题】:Very slow mail sending with Django send_mail method使用 Django send_mail 方法发送邮件非常慢
【发布时间】:2013-09-24 15:01:56
【问题描述】:

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

直到最近我才真正遇到过任何问题(自从我升级到 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。任何建议将不胜感激。

谢谢!

【问题讨论】:

标签: python django email gmail


【解决方案1】:

也许设置Celery而不是线程?

您还可以使用SendGrid 之类的电子邮件服务,而不必担心邮件的负载。只需通过 REST 或使用 SMTP 访问他们的 API

【讨论】:

  • 我没有尝试 sendgrid 但确实切换到 celery 进行邮件发送。实际上,速度慢既是发送实际邮件的问题,也是数据库的问题。
猜你喜欢
  • 2015-10-18
  • 2020-08-09
  • 2017-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-17
  • 2011-12-29
相关资源
最近更新 更多