2016-03-08 32 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服務器錯誤,但是我嘗試發送的測試電子郵件未送達(儘管我在嘗試啓動時未收到任何錯誤消息)。

似乎不正確,我需要註釋掉一行Sendgrid代碼才能導入導入工作,而我無法弄清楚爲什麼其他人使用Python和GAE運行Sendgrid時沒有相同的功能問題。任何想法將不勝感激。謝謝。

回答

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

完美 - 解決了這個問題。感謝Alex。 – dsedwards

+0

說明建議通過pip安裝sendgrid安裝sendgrid。這應該照顧的依賴,我想這是這一步不包括在內的原因... – dyeray

+0

@dyeray,在你的本地'dev_appserver'工作,但它不能在App Engine上正常工作 - 你不能運行那裏有'點子'!我們正在努力解決這些文檔(希望能夠正確使用https://cloud.google.com/appengine/docs/python/tools/libraries27#vendoring,這也是文檔中缺少的部分 - 不是必須但強烈推薦)。 –