首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应用引擎python urlfetch超时

应用引擎python urlfetch超时
EN

Stack Overflow用户
提问于 2011-06-18 00:27:13
回答 5查看 2.8K关注 0票数 1

我有两个正在运行的应用程序引擎应用程序实例,我希望与Restful接口进行通信。一旦其中一个的数据被更新,它就会调用另一个上的web钩子,该钩子将为它自己的系统检索数据的最新副本。在'site1‘里面,我有:

代码语言:javascript
复制
 from google.appengine.api import urlfetch

 url = www.site2.com/data_updated
 result = urlfetch.fetch(url)

在'site2‘上的data_updated处理程序中,我有:

代码语言:javascript
复制
 url = www.site1.com/get_new_data
 result = urlfetch.fetch(url)

在两个站点之间传递的数据非常少,但我收到以下错误。我尝试将截止时间增加到10秒,但仍然不起作用。

代码语言:javascript
复制
 DeadlineExceededError: ApplicationError: 5 

有人能提供一些关于可能发生的事情的见解吗?

谢谢-理查德

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-06-18 20:38:10

将方法从

代码语言:javascript
复制
  result = urlfetch.fetch(url)

代码语言:javascript
复制
  result = urlfetch(url,deadline=2,method=urlfetch.POST)

修复了Deadline错误。

urlfetch documentation

deadline等待远程主机响应的最长时间,以秒为单位。如果远程主机在这段时间内没有响应,则会引发DownloadError。

等待请求所花费的时间不计入请求的CPU配额。它确实计入了请求计时器。如果app请求计时器在URL抓取调用返回之前超时,则调用将被取消。

请求处理程序的截止时间最长可达60秒,任务队列和cron作业处理程序的截止时间最长可达10分钟。如果deadline为None,则将deadline设置为5秒。

票数 3
EN

Stack Overflow用户

发布于 2011-06-18 19:13:13

App Engine的urlfetch并不总是按照预期运行,您有大约10秒的时间来获取URL。假设您正在尝试获取的URL已启动并正在运行,您应该能够通过调用from google.appengine.runtime import apiproxy_errors,然后使用except apiproxy_errors.DeadlineExceededError:将urlfetch调用包装在try/except块中来捕获DeadlineExceededError

相关答案here

票数 3
EN

Stack Overflow用户

发布于 2011-06-18 02:25:58

您是否尝试过使用curl或其他方式手动查询URL (www.site2.com/data_updated和www.site1.com/get_new_data),以确保它们在时间限制内响应?即使需要传输的数据量很小,处理程序也可能存在问题,导致返回结果的延迟。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6388778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档