【发布时间】:2011-06-16 10:21:47
【问题描述】:
我正在 App Engine 上用 Python 构建一个应用程序。我的应用程序接收图像作为电子邮件附件。当收到一封电子邮件时,我抓取图像并需要将其发送到第三方 API。
我做的第一件事是:
1) 使用图像数据向第三方 API 发出 POST 请求
我停止了这个方法,因为我在使用 urllib2 和 MultipartPostHandler 时遇到了一些非常糟糕的编码问题。
我现在正在做的第二件事是
1) 将图像放入 Datastore
中的传入电子邮件中
2) 将其放入 memcache
3) 向 API 发送一个为图片提供服务的 URL(使用 memcache,如果在 memcache 中找不到,则使用 Datastore)
我在日志中看到的问题是:DeadlineExceededError: ApplicationError: 5
更准确地说,我在日志中看到了两个请求:
- 首先,收到的电子邮件
- 然后,第三方 API HTTP 调用我给他的 URL 上的图像
传入的电子邮件以 DeadlineExceededError 结束。 对我的应用程序的第三方 API 调用结果很好,可以正确地提供图像。
我的解释:
看起来 App Engine 等待第三方 API 的响应,然后由于超时而关闭,然后为第三方 API 为图像发出的请求提供服务。不幸的是,由于连接已关闭,一旦第三方 API 收到我的图像,我就无法获得有用的信息。
我的问题:
1) App Engine 可以处理来自它应该得到响应的主机的请求吗?
2)如果没有,我该如何绕过这个问题?
【问题讨论】:
标签: python image api google-app-engine timeout