我正在尝试让Django (在GAE之上)从另一个web服务中获取数据。我经常犯这样的错误:
ApplicationError: 2个超时请求 方法:获取 请求网址:http://localhost:8080/ 异常类型: DownloadError 异常值: ApplicationError: 2超时 异常位置: /google_appengine/google/appengine/api/urlfetch.py in _get_fetch_result,第325行
感觉好像只有在12秒之后才会超时(我不确定,但它真的很短)。
问题:我如何设置更长的超时时间?
发布于 2010-01-29 05:22:56
请求处理程序的截止时间最多可达60秒,任务队列和cron作业处理程序的截止时间最多可达10分钟。如果截止日期为“无”,则将截止日期设置为5秒。
编辑:看起来已经改变了。来自这里
您可以为请求设置最后期限,服务将等待响应的时间最多。默认情况下,获取的截止日期是5秒。可以使用
urlfetch.set_default_fetch_deadline()
函数调整请求的默认截止日期。
此页列出了默认的超时值:
当前,Python运行时有几个名为DeadlineExceededError的错误:
google.appengine.runtime.DeadlineExceededError
:如果整个请求超时(通常在60秒之后),或者任务队列请求需要10分钟,则会引发。google.appengine.runtime.apiproxy_errors.DeadlineExceededError
:如果RPC超过其截止日期就会引发。这通常是5秒,但是对于一些使用“截止日期”选项的API来说是可以设置的。google.appengine.api.urlfetch_errors.DeadlineExceededError
:如果URLFetch超时,就会引发。发布于 2012-10-19 11:06:54
考虑到这是一个Python
问题,我想我应该为任何遇到这个问题的人提供一个Python的答案。
只需导入urlfetch
,然后在代码中执行其他操作之前定义一个截止日期:
from google.appengine.api import urlfetch
urlfetch.set_default_fetch_deadline(60)
发布于 2013-06-22 15:44:51
接下来,您可能需要尝试下面的代码。
// createClient is urlfetch.Client with Deadline
func createClient(context appengine.Context, t time.Duration) *http.Client {
return &http.Client{
Transport: &urlfetch.Transport{
Context: context,
Deadline: t,
},
}
}
以下是如何使用它。
// urlfetch
client := createClient(c, time.Second*60)
https://stackoverflow.com/questions/2162115
复制相似问题