【问题标题】:Python Django Mandrill API response 500Python Django Mandrill API 响应 500
【发布时间】:2017-06-14 15:31:01
【问题描述】:

我一直在研究这个问题,但被困在下面的 Python 中。

https://github.com/miohtama/LibertyMusicStore

它使用 Django,后者又通过 Python 包 Djrill 使用 Mandrill 来处理电子邮件。它已设置并正常工作,但在更新 SSL 证书后,注意到注册不再有效,但生成了“500 服务器错误”消息。此事件的日志复制在下面。

一个新的 MailChimp 帐户已添加 Mandrill,我创建了一个新的 API 密钥并更新了 MANDRILL_API_KEY 条目。在 Mandrill 域上,SPF 和 DKIM 已经过验证,但仍然无法正常工作。我不熟悉这个软件,如果你知道怎么做,我相信这很简单。如果我查看 Mandrill API 日志,它们完全是空白的,这让我觉得我在某处遗漏了一些配置,比如更改 API 密钥不足以更改 Mandrill 帐户。

这是提交表单时产生问题的页面。

http://music.artbyte.me/musician-sign-up/

关于我做错了什么有什么想法吗?

INFO 2017-01-28 09:07:48,278 connectionpool 86.142.174.63 - POST /signup/ HTTP/1.1" Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36 Starting new HTTP connection (1): mandrillapp.com
ERROR 2017-01-28 09:07:48,418 base - - - - -" - Internal Server Error: /signup/
Traceback (most recent call last):
File "/srv/django/applebytestore/venv/lib/python3.4/site-packages/django/core/handlers/base.py", line 111, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/srv/django/applebytestore/venv/lib/python3.4/site-packages/django/db/transaction.py", line 394, in inner
return func(*args, **kwargs)
File "./tatianastore/signup.py", line 116, in signup
File "./tatianastore/signup.py", line 103, in create_user
File "./tatianastore/emailer.py", line 22, in mail_store_owner
msg.send()
File "/srv/django/applebytestore/venv/lib/python3.4/site-packages/django/core/mail/message.py", line 286, in send
return self.get_connection(fail_silently).send_messages([self])
File "/srv/django/applebytestore/venv/lib/python3.4/site-packages/djrill/mail/backends/djrill.py", line 68, in send_messages
sent = self._send(message)
File "/srv/django/applebytestore/venv/lib/python3.4/site-packages/djrill/mail/backends/djrill.py", line 119, in _send
(msg_dict['to'], msg_dict['from_email']))
djrill.exceptions.MandrillAPIError: Mandrill API response 500
Failed to send a message to [{'name': '', 'email': 'n@n.com', 'type': 'to'}], from no-reply@libertymusicstore.net

【问题讨论】:

  • 尝试创建一个我们可以创建的更小的示例,而无需设置整个LibertyMusicStore 项目。如果您手动运行send_email 命令(如Djrill readme)会发生什么?请注意,文档警告说 Djrill 已近一年无人维护,并推荐使用 django-anymail。
  • 我已将项目移至 AnyMail 但得到相同的响应,我已从 tatianastore/creditor.py 和 tatianastore/emailer.py 中删除了对 tatianastore/emailer.py 中 mail_store_owner 的两个调用,但是仍然收到相同的消息。由于迁移到 AnyMail 至少应该产生不同的错误,因此大部分内容不会更新。重新启动 nginx 并删除了所有 .pyc 文件,但仍然收到相同的消息。我不是 Python 编码员,所以对此感到非常困惑。
  • 正如我之前所说,我会通过手动运行自述文件中的send_email 命令来确保您的设置正确无误。目前,尚不清楚问题出在您的配置中还是您链接到的存储库中。您目前没有容易重现的错误,因此它不适合堆栈溢出。
  • 你帮了很多忙,我对 Python 的世界一无所知,所以任何东西都是奖励。迁移到 AnyMail 解决了这个问题,我遵循了迁移步骤。重新启动服务器更新了所有内容。我猜 Djrill 没有跟上变化,AnyMail 只是使用迁移步骤,但几乎相同。如果您写下“移至 AnyMail”,我会将您的答案标记为正确。

标签: python django mandrill


【解决方案1】:

djrill 文档说该项目自 2016 年 4 月以来一直处于非活动状态。他们建议您改用 django-anymail

当您在生产中更新 Python 代码时,您需要重新启动服务器(例如 Apache 或 gunicorn)以使更改生效。

【讨论】:

  • 谢谢。 AnyMail 只是在遵循迁移文档后工作。必须再等 20 个小时才能奖励积分。
  • 仅供参考,来自 Mandrill 的 5xx 错误通常是您和他们之间的暂时性网络问题。您将来可能会再次看到它们,它们通常会在几分钟内解决。 (但升级到 Anymail 仍然是一个好主意——它比 Djrill 有更好的错误消息,所以如果再次发生这种情况,您将获得更多详细信息。Anymail/Djrill 维护者。)
猜你喜欢
  • 2014-01-20
  • 2017-11-07
  • 2014-11-02
  • 2020-02-04
  • 2023-03-05
  • 2016-07-13
  • 1970-01-01
  • 2016-03-29
  • 2019-03-22
相关资源
最近更新 更多