无法将SendGrid导入GAE应用程序

8
我有一个GAE应用程序,想要与Sendgrid集成。我已经按照说明(https://cloud.google.com/appengine/docs/python/mail/sendgrid)安装了Sendgrid,在我的本地开发环境中一切正常。
但是,当我将应用程序推送到GAE并运行它时,我立即收到以下500个服务器错误:
错误:服务器错误 服务器遇到错误,无法完成您的请求。请在30秒后重试。
即使打开了调试模式,也只能得到这些信息。但是查看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的人没有遇到同样的问题。如果您有任何想法,将不胜感激。谢谢。
1个回答

11

这些指令建议通过pip install sendgrid安装sendgrid。这应该会处理依赖关系,我猜这就是为什么没有包括这一步骤的原因... - dyeray
@dyeray,这在本地的dev_appserver上可以工作,但在App Engine上无法工作--您不能在那里运行pip!我们正在努力修复文档(希望包括正确使用https://cloud.google.com/appengine/docs/python/tools/libraries27#vendoring,该部分文档中也缺少--虽然不是必须的,但强烈建议)。 - Alex Martelli
@AlexMartelli 只需要将 pip --target 安装到本地目录中,它就会成为 GAE 项目的一部分。然后在进行部署时,它会自动上传。 - manubot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接