2016-03-08 38 views
6

Mam aplikację GAE, którą chcę zintegrować z Sendgrid. Postępowałem zgodnie z instrukcjami (https://cloud.google.com/appengine/docs/python/mail/sendgrid) dotyczącymi instalacji Sendgrid i wszystko działa dobrze w moim lokalnym środowisku deweloperskim.Nie można importować sendgrid do aplikacji GAE

Jednak, kiedy wciskam aplikację GAE i uruchomić go, od razu pojawia się następujący błąd 500 serwera:

Error: Server Error

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

Nawet debugowania na to wszystko mam. Ale kopanie w dziennikach na GAE widzę źródło problemu:

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

więc poszedłem do sendgrid/client.py i wypowiedziało się następujący wiersz kodu ...

import python_http_client 

Gdy to zrobię, mogę uruchomić moją aplikację bez otrzymywania błędu 500 serwera, ale e-mail testowy, który próbowałem wysłać, nie został dostarczony (chociaż nie otrzymałem żadnych komunikatów o błędach podczas próby zainicjowania go).

Nie wydaje mi się, że muszę skomentować linię kodu Sendgrid, aby wykonać importowanie i nie mogę zrozumieć, dlaczego inni, którzy używają Sendgrid z Pythonem i GAE, nie mają tego samego problem. Wszelkie przemyślenia będą mile widziane. Dzięki.

Odpowiedz

7

sendgrid musi python_http_client, która sama Sendgrid utrzymuje w https://github.com/sendgrid/python-http-client - wystarczy skopiować kilka plików w katalogu https://github.com/sendgrid/python-http-client/tree/master/python_http_client do katalogu o nazwie python_http_client, czyniąc ostatnie rodzeństwo katalogu sendgrid. Nie wiem, dlaczego w dokumentach online tego nie wymieniono - postaram się to naprawić, ale tymczasem mam nadzieję, że to obejście pozwoli Ci zacząć.

+0

Perfect - to rozwiązało problem. Dzięki Alex. – dsedwards

+0

Instrukcje zalecają instalację sendgrid poprzez instalację pip sendgrid. Powinno to zająć się zależnościami, myślę, że to jest powód, dla którego ten krok nie jest zawarty ... – dyeray

+0

@rzasnik, który działa na lokalnym 'dev_appserver', ale nie działa poprawnie na App Engine - nie można uruchomić 'pip' tam! Pracujemy nad naprawieniem dokumentów (miejmy nadzieję, że uwzględnimy właściwe korzystanie z https://cloud.google.com/appengine/docs/python/tools/libraries27#vendoring, którego również brakuje w tej części dokumentów - nie ale zdecydowanie zalecane). –