我正在使用最新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
处理程序。
答案 0 :(得分:1)
我能想到的两个选择是:
使用GAE标准邮件API的自定义日志记录处理程序,与500错误处理程序没有太大区别,但您不必重写视图:https://docs.djangoproject.com/en/dev/topics/logging/
替换电子邮件后端。我不是100%肯定这是有效的,但我怀疑它会。 Django-nonrel项目中已有一个(顺便提一下,仍然保持着) https://github.com/django-nonrel/djangoappengine 看看mail.py