2016-03-08 2 views
6

У меня есть приложение GAE, которое я хочу интегрировать с Sendgrid. Я выполнил инструкции (https://cloud.google.com/appengine/docs/python/mail/sendgrid) о том, как установить Sendgrid, и все работает отлично в моей локальной среде.Не удалось импортировать sendgrid в приложение GAE

Однако, когда я нажимаю мое приложение GAE и запустить его, я сразу же получить следующую ошибку 500 сервера:

Error: Server Error

The server encountered an error and could not complete your request. Please try again in 30 seconds.

Даже при отладке на, это все, что я получаю. Но копаться в логах на GAE Я могу видеть источник проблемы:

Traceback (most recent call last): File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 240, in Handle handler = _config_handle.add_wsgi_middleware(self._LoadHandler()) File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler handler, path, err = LoadObject(self._handler) File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 85, in LoadObject obj = ____import____(path[0]) File "/base/data/home/apps/....wsgi_app.py", line 16, in import sendgrid File "/base/data/home/apps/..../sendgrid/____init____.py", line 7, in from .client import SendGridAPIClient File "/base/data/home/apps/..../sendgrid/client.py", line 1, in import python_http_client ImportError: No module named python_http_client

Так что я пошел в sendgrid/client.py и закомментировал следующую строку кода ...

import python_http_client 

Как только я это сделаю, я могу запустить свое приложение, не получив 500 Server Error, но тестовое письмо, которое я пытался отправить, не было доставлено (хотя я не получал никаких сообщений об ошибках при попытке инициировать его).

Не кажется правильным, что мне нужно прокомментировать строку кода Sendgrid, чтобы сделать импорт, и я не могу понять, почему другие, которые работают с Sendgrid с Python и GAE, не имеют одинаковых проблема. Любые мысли были бы оценены. Благодарю.

ответ

7

sendgrid действительно нуждается python_http_client, которая сама по себе Sendgrid поддерживает в https://github.com/sendgrid/python-http-client - просто скопировать несколько файлов в директории https://github.com/sendgrid/python-http-client/tree/master/python_http_client к директории с именем python_http_client, что делает последний родной брат из sendgrid каталога. Я не уверен, почему в онлайн-документах это не упоминается - я буду работать, чтобы исправить это, но пока надеюсь, что это решение поможет вам начать работу.

+0

Perfect - это решило проблему. Спасибо Алекс. – dsedwards

+0

Инструкции рекомендуют установить sendgrid через pip install sendgrid. Это должно заботиться о зависимостях, я думаю, это причина, по которой этот шаг не включен ... – dyeray

+0

@dyeray, который работает на вашем локальном 'dev_appserver', но он не может работать на App Engine - вы не можете запускать 'pip' там! Мы работаем над исправлением документов (надеюсь, включая правильное использование https://cloud.google.com/appengine/docs/python/tools/libraries27#vendoring, отсутствующее в этой части документов), а не но настоятельно рекомендуется). –

Смежные вопросы