【发布时间】: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。任何建议将不胜感激。
谢谢!
【问题讨论】:
-
如果你从 Django 发送到本地主机上的 Postfix,send_mail 应该几乎是即时的。这里有一些关于设置 Postfix 的信息:stackful-dev.com/django-email-tricks-part-2.html,也许会有所帮助。