如何解决本地主机(Google App Engine - Python)的截止时间超出错误? [英] How to solve 'deadline exceeded error in localhost (Google App Engine - Python)?

查看:145
本文介绍了如何解决本地主机(Google App Engine - Python)的截止时间超出错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的谷歌应用引擎应用程序在生产中工作正常。但是当尝试从本地主机中的URL获取json时,它会报告错误。我想知道如何避免这个截止时间超过的错误?感谢提前!



错误:

 文件/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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆