如何解决本地主机(Google App Engine - Python)的截止时间超出错误? [英] How to solve 'deadline exceeded error in localhost (Google App Engine - Python)?
本文介绍了如何解决本地主机(Google App Engine - Python)的截止时间超出错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
错误:
文件/usr/local/google_appengine/google/appengine/api/urlfetch.py,第410行,_get_fetch_result'等待HTTP响应从URL的最后期限:'+ url)
url ='http://127.0.0.1:8000/api/en/languages?access_token=MY_SECRET_API_TOKEN'
代码
#...
def query_api(language_code,api_request,
url = build_url(language_code,api_request,extra_parameters)
result = urlfetch.fetch(url)
try:
data = json.loads(result。内容)
除了:
data =无
返回数据
def build_url(language_code,api_request,extra_parameters):
url = str(settings.SITE_URL )+'/ api /'+ str(language_code)+'/'+ api_request +'?access_token ='+ settings.API_ACCESS_TOKEN
for k,v in extra_ parameters.iteritems():
url = url +'&'+ urllib.urlencode(k)+'='+ urllib.urlencode(v)
return url
来自网址的回复:
http://127.0.0.1:8000/api/en/languages?access_token=MY_SECRET_API_TOKEN
{
languages:[
{
code:en,
name:English
},
{
code:es,
name :Español
},
{
code:fr,
name:Français
},
{
code:de,
name:Deutsch
},
{
code:pt,
name:葡萄牙语
},
{
code:ru,
name:Pусский
},
{
code:iw,
name:עִברִית
},
{
code:zh,
name:中文
}
]
}
解决方案
难道你的服务需要一段时间才能回应?自 默认情况下,提取的截止日期为5秒
,可能会以较长的截止日期来查看是否有原因。
例如,要设置你可以这样做30秒:
urlfetch.set_default_fetch_deadline(30)
My google app engine app works fine in production. But it reports an error, when trying to fetch json from a URL in the localhost. I would like to know how to avoid this 'Deadline exceeded' error? Thanks in advance!
Error:
File "/usr/local/google_appengine/google/appengine/api/urlfetch.py", line 410, in _get_fetch_result 'Deadline exceeded while waiting for HTTP response from URL: ' + url)
url = 'http://127.0.0.1:8000/api/en/languages?access_token=MY_SECRET_API_TOKEN'
Code:
# ...
def query_api(language_code, api_request, extra_parameters={}):
url = build_url(language_code, api_request, extra_parameters)
result = urlfetch.fetch(url)
try:
data = json.loads(result.content)
except:
data = None
return data
def build_url(language_code, api_request, extra_parameters):
url = str(settings.SITE_URL) + '/api/' + str(language_code) + '/' + api_request + '?access_token=' + settings.API_ACCESS_TOKEN
for k, v in extra_parameters.iteritems():
url = url + '&' + urllib.urlencode(k) + '=' + urllib.urlencode(v)
return url
Response from URL:
http://127.0.0.1:8000/api/en/languages?access_token=MY_SECRET_API_TOKEN
{
"languages": [
{
"code": "en",
"name": "English"
},
{
"code": "es",
"name": "Español"
},
{
"code": "fr",
"name": "Français"
},
{
"code": "de",
"name": "Deutsch"
},
{
"code": "pt",
"name": "Portuguese"
},
{
"code": "ru",
"name": "Pусский"
},
{
"code": "iw",
"name": "עִברִית"
},
{
"code": "zh",
"name": "中文"
}
]
}
解决方案
Could it be your service takes a while to respond? Since By default, the deadline for a fetch is 5 seconds
, it might be useful to fetch with a longer deadline to see if this is the cause.
For instance, to set it to 30 seconds you'd do it like this:
urlfetch.set_default_fetch_deadline(30)
这篇关于如何解决本地主机(Google App Engine - Python)的截止时间超出错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文