python - 无法将 sendgrid 导入 GAE 应用程序

标签 python google-app-engine sendgrid

我有一个要与 Sendgrid 集成的 GAE 应用程序。我已按照有关如何安装 Sendgrid 的说明 ( https://cloud.google.com/appengine/docs/python/mail/sendgrid ) 进行操作,并且在我的本地开发环境中一切正常。

但是,当我将我的应用程序推送到 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 的人没有遇到同样的问题.任何想法将不胜感激。谢谢。

最佳答案

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 目录的同级目录。我不确定为什么在线文档没有提到这一点——我会努力修复它,但与此同时我希望这个解决方法能让你开始。

关于python - 无法将 sendgrid 导入 GAE 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35879976/

相关文章:

python - 在 Google App Engine 上使用 Django 限制对 Shopify API 的 API 调用速率

java - Google App Engine DataStore - 如何以有效的方式从 Java 子表的键中选择父实体?

node.js - 使用nodemailer/sendgrid上传多个文件

python - 排序功能。解释

python numpy.savetxt 一个混合格式的矩阵

python - sikuli的moveTo()错误

python - 如何创建内部 Web 表单/应用程序来收集用户输入并存储它

google-app-engine - 如何以编程方式在 Dataproc 集群上运行 Hadoop 实用程序?

azure - 为什么sendgrid营销部分会被授权

php - "The sender hasn' t 已使用 sendgrid 验证此消息”