Python 我正在获取urllib2.HTTPError:HTTP错误502:网关错误

Python 我正在获取urllib2.HTTPError:HTTP错误502:网关错误,python,json,url,Python,Json,Url,/*Iam正在获取urllib2.HTTPError:HTTP错误502:网关错误*/ import urllib2 import json # locu_api = 'd1dab0b393b10f56532cacf6835d2619973f5f46' url = 'http://cricapi.com/api/cricketNews' /*The above url is used from cricapi.com*/ str = "" json_obj = urllib2.urlope

/*Iam正在获取urllib2.HTTPError:HTTP错误502:网关错误*/

import urllib2
import json

# locu_api = 'd1dab0b393b10f56532cacf6835d2619973f5f46' 
url = 'http://cricapi.com/api/cricketNews'
/*The above url is used from cricapi.com*/
str = ""

json_obj = urllib2.urlopen(url)

data = json.load(json_obj)
i = 0
titles = {}

for item in data['data']:
    if item:
        titles[i] = item['title']
        i+=1
print titles
/*printing all the content fetched from cricapi*/
if not str:
    print "Hello"
在建立了上述代码之后, 我遇到以下错误:

回溯(最近一次呼叫最后一次):

文件“/home/karthi/Desktop/proj/cric.py”,第51行,在
json_obj=urllib2.urlopen(url.read())
文件“/usr/lib/python2.7/urllib2.py”,urlopen中的第127行
return\u opener.open(url、数据、超时)
文件“/usr/lib/python2.7/urllib2.py”,第410行,打开
响应=方法(请求,响应)
http_响应中的文件“/usr/lib/python2.7/urllib2.py”,第523行
“http”、请求、响应、代码、消息、hdrs)
文件“/usr/lib/python2.7/urllib2.py”,第448行出错
返回自我。调用链(*args)
文件“/usr/lib/python2.7/urllib2.py”,第382行,在调用链中
结果=func(*args)
文件“/usr/lib/python2.7/urllib2.py”,第531行,默认为http\u error\u
raise HTTPError(请求获取完整url(),代码,消息,hdrs,fp)
urllib2.HTTPError:HTTP错误502:错误网关
一周前。我能得到结果。但现在我得到了错误


有谁能解释一下我遇到的阻碍,并提供一个解决方案。

Karthi,您所说的问题对于许多API提供商来说都很常见。发生的情况是,如果服务器负载超过该瞬间的容量,您可能会从反向代理获得502,从而遇到错误情况

建议的解决方法是进行重试计数。比如说

function fetchdata(url) {
  try { 
    // hit the URL and fetch data
  } catch() {
    // retry in case of an error
    return fetchdata(url); 
  }
}
如果使用回调支持语言,另一种方法是重试给定次数,然后调用回调

function fetchdata(url, callback) {
  try { 
    // hit the URL and fetch data
    // success!
    callback(returndata);
  } catch() {
    // retry in case of an error
    if(exceeded retry count) callback(error); 
else 
    fetchdata(url, callback); 
  }
}
注意:这是示例伪代码,不是正确的可用代码,因此请将其视为可用代码

当然,唯一的长期解决办法是与API提供商联系,请求他们帮助找出问题所在。大多数API提供商往往对服务质量相当挑剔,如果他们看到有人面临问题,可能会迅速提供帮助

function fetchdata(url, callback) {
  try { 
    // hit the URL and fetch data
    // success!
    callback(returndata);
  } catch() {
    // retry in case of an error
    if(exceeded retry count) callback(error); 
else 
    fetchdata(url, callback); 
  }
}