我正在App Engine上使用Python构建应用程序。我的应用程序收到图像作为电子邮件附件。当电子邮件进入时,我抓住图像,并需要将其发送到第三方API。App Engine超时错误:使用存储在App Engine上的图像提供第三方API
我做的第一件事是:
1)做一个POST请求第三方API与图像数据
我停止这种方法,因为我曾与urllib2的和MultipartPostHandler一些非常糟糕的编码问题。
我现在在做的第二件事是
1)将图像中的传入电子邮件中数据存储
2)把它放在内存缓存
3)发送到API的服务于图像(使用内存缓存或者,如果在内存缓存中没有找到,数据存储)URL
我在我的日志读取的问题是:DeadlineExceededError:的ApplicationError:5
更确切地说,我看到我的日志两个要求:
- 第一,收到的电子邮件
- 然后,第三方API HTTP调用我的图像上的网址我给他
传入电子邮件结束了DeadlineExceededError。 第三方API调用到我的应用程序结束了很好,正确地提供图像。
我的解释:
它看起来像App Engine的等待从第三方API的响应,然后关闭,因为超时,然后提供由第三方API的图像提出的要求。不幸的是,当连接关闭时,一旦它接收到我的图像,我就无法获得第三方API提供的有用信息。
我的问题:
1)应用程序引擎可以处理来自主机的请求时,它假设得到的回应?
2)如果没有,我怎么能绕过这个问题?
我只使用生产环境(因为没有办法处理本地环境中的电子邮件附件)。此外,由于第三方API需要认证,我使用URLfetch的urllib或urllib2包装。因此,我不知道如何访问低级别URLfetch来限制其最后期限。也许你是对的,我应该回到修复昨天使用的POST请求......或者我会看看这些cron作业。无论如何感谢您的回答! – Damien 2011-06-16 15:44:04
我并不积极,但我认为电子邮件处理程序也应该被归类为URLFetch超时目的的“脱机请求”,因此排队任务队列任务可能不是必需的。 – 2011-06-17 03:49:07
关于直接使用urlfetch扩展urlfetch截止日期,您可以这样做:http://blog.notdot.net/2009/11/API-call-hooks-for-fun-and-profit(请参阅该帖子的末尾) – 2011-06-17 03:49:57