我有一个GAE应用程序,我想与Sendgrid集成。我按照说明(https://cloud.google.com/appengine/docs/python/mail/sendgrid)了解了如何安装Sendgrid,一切都在我的本地开发环境中正常工作。
但是,当我将我的应用程序推送到GAE并运行它时,我立即收到以下500服务器错误:
错误:服务器错误
服务器遇到错误,无法完成您的请求。 请在30秒后再试一次。
即使启用调试,这就是我得到的全部内容。但是在GAE中挖掘日志我可以看到问题的根源:
Traceback(最近一次调用最后一次):文件 “/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py” 第240行,在Handle中 handler = _config_handle.add_wsgi_middleware(self._LoadHandler())文件 “/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py” 第299行,在_LoadHandler中 handler,path,err = LoadObject(self._handler)文件“/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py”, 第85行,在LoadObject中 obj = ____ import ____(path [0])文件“/base/data/home/apps/....wsgi_app.py”, 第16行,在 import sendgrid文件“/base/data/home/apps/..../sendgrid/____init____.py”, 7号线,在 来自.client导入SendGridAPIClient文件“/base/data/home/apps/..../sendgrid/client.py”, 第1行,in import python_http_client ImportError:没有名为python_http_client的模块
所以我进入了sendgrid / client.py并注释掉了以下代码行......
import python_http_client
一旦我这样做,我可以运行我的应用程序而不会收到500服务器错误,但我尝试发送的测试电子邮件未送达(虽然我尝试启动它时没有收到任何错误消息)。
我需要注释掉一行Sendgrid代码以使导入工作似乎不对,我无法弄清楚为什么其他运行带有Python和GAE的Sendgrid的人没有同样的问题。任何想法将不胜感激。谢谢。
答案 0 :(得分:8)
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目录的兄弟。我不确定为什么在线文档没有提及 - 我会努力解决这个问题,但同时我希望这个解决方法可以让你开始。