在Google App Engine上发送Django 500错误电子邮件的最佳方式是什么?

时间:2012-03-21 23:31:35

标签: django google-app-engine

我正在使用最新Google App Engine(GAE)环境提供的最新工具,即Django 1.3来自

libraries:
- name: django
  version: "1.3"

按照GAE文件的指示进行。

尽管我发现很多链接讨论如何使用功能强大的GAE-Django组合发送有福的HTTP500电子邮件,但它们都已过时,因为它们要么太旧,要么使用“附加”工具,如AppEngineHelper或django -nonrel。

回到我的问题:我设置了我的settings.py以遵循Django文档说明here,因为在GAE opening sockets is restricted上我最终得到了这个追溯:

ERROR    2012-03-21 23:11:15,855 base.py:209] Internal Server Error: /contact/
Traceback (most recent call last):
  File "/home/josvic/dev-tools/google_appengine/lib/django_1_3/django/core/handlers/base.py", line 111, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "/home/josvic/dev/qdsa/gae/apputil/decorators.py", line 14, in wrapper
    output = func(request, *args, **kw)
  File "/home/josvic/dev/qdsa/gae/qdcom/views/contact.py", line 26, in __call__
    return self.f(request, *args, **kwargs)
  File "/home/josvic/dev/qdsa/gae/qdcom/views/contact.py", line 59, in contact_page
    msg.send()
  File "/home/josvic/dev-tools/google_appengine/lib/django_1_3/django/core/mail/message.py", line 251, in send
    return self.get_connection(fail_silently).send_messages([self])
  File "/home/josvic/dev-tools/google_appengine/lib/django_1_3/django/core/mail/backends/smtp.py", line 79, in send_messages
    new_conn_created = self.open()
  File "/home/josvic/dev-tools/google_appengine/lib/django_1_3/django/core/mail/backends/smtp.py", line 42, in open
    local_hostname=DNS_NAME.get_fqdn())
  File "/home/josvic/dev-tools/google_appengine/lib/django_1_3/django/core/mail/utils.py", line 16, in get_fqdn
    self._fqdn = socket.getfqdn()
AttributeError: 'module' object has no attribute 'getfqdn'

这就是问题所在。我们有一种规避方法吗?

我唯一能想到的绕过这个问题的方法是使用一个使用GAE标准邮件API的自定义500error处理程序。

1 个答案:

答案 0 :(得分:1)

我能想到的两个选择是:

  1. 使用GAE标准邮件API的自定义日志记录处理程序,与500错误处理程序没有太大区别,但您不必重写视图:https://docs.djangoproject.com/en/dev/topics/logging/

  2. 替换电子邮件后端。我不是100%肯定这是有效的,但我怀疑它会。 Django-nonrel项目中已有一个(顺便提一下,仍然保持着) https://github.com/django-nonrel/djangoappengine 看看mail.py