无法将sendgrid导入GAE应用程序

时间:2016-03-08 23:17:00

标签: python google-app-engine sendgrid

我有一个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的人没有同样的问题。任何想法将不胜感激。谢谢。

1 个答案:

答案 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目录的兄弟。我不确定为什么在线文档没有提及 - 我会努力解决这个问题,但同时我希望这个解决方法可以让你开始。