Как лучше всего отправить сообщение об ошибке Django 500 в Google App Engine? - PullRequest
1 голос
/ 22 марта 2012

Я использую новейшие инструменты, предоставляемые новейшей средой Google App Engine (GAE), то есть Django 1.3 через

libraries:
- name: django
  version: "1.3"

как указано в документации GAE здесь.

Тем не менее, хотя я нашел много ссылок, обсуждающих, как отправлять благословенные сообщения HTTP500 с помощью мощного комбо GAE-Django, все они устарели, потому что они либо просто слишком стары, либо используют «дополнительные» инструменты, такие как AppEngineHelper или django. -nonrel.

Возвращаясь к моей проблеме: я настроил settings.py для следования инструкциям Django Docs здесь , и, поскольку в GAE открытие сокетов ограничено Я получаю эту трассировку:

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'

Так вот в чем проблема. У нас есть стандартный способ обойти это?

Единственное, что я могу придумать, чтобы обойти эту проблему, - прибегнуть к пользовательскому обработчику 500error, который использует стандартный почтовый API GAE.

1 Ответ

1 голос
/ 22 марта 2012

Два варианта, о которых я могу подумать:

  1. Пользовательский обработчик ведения журнала, использующий стандартный почтовый API GAE, не слишком отличающийся от обработчика ошибок 500, но вам не нужно переписыватьпредставление: https://docs.djangoproject.com/en/dev/topics/logging/

  2. Заменить почтовый сервер.Я не уверен на 100%, что это работает, но я подозреваю, что так и будет.В проекте Django-nonrel уже есть один (который, кстати, все еще поддерживается) https://github.com/django-nonrel/djangoappengine посмотрите в mail.py

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...