我正在使用 Yahoo Api,除了添加了硬睡眠之外,我还实现了随机睡眠方法,但我仍然无法弄清楚如果我在第一次尝试时没有得到响应,我该如何等待或重试。
例如,我在下面放置的代码完全随机地在某些用户中失败。失败后,我在浏览器上获取 url,它就像一个魅力。所以我的问题是为什么?我该如何解决这个问题?或者我可以改进此代码以在艰难睡眠后执行另一个请求(仅当那是一个好方法时)
我忘了添加更多信息,我更改了代码以获取我的 http 成功代码:
print urlobject.getcode()
它返回 200,但没有 json,因为有些人认为这可能是节流。
注意:我已经从 url 中删除了我的 appid(Key)
# return the json question for given question id
def returnJSONQuestion(questionId):
randomSleep()
url = 'http://answers.yahooapis.com/AnswersService/V1/getQuestion?appid=APPIDREMOVED8&question_id={0}&output=json'
format_url = url.format(questionId)
try:
request = urllib2.Request(format_url)
urlobject = urllib2.urlopen(request)
time.sleep(10)
jsondata = json.loads(urlobject.read().decode("utf-8"))
print jsondata
except urllib2.HTTPError, e:
print e.code
logging.exception("Exception")
except urllib2.URLError, e:
print e.reason
logging.exception("Exception")
except(json.decoder.JSONDecodeError,ValueError):
print 'Question ID ' + questionId + ' Decode JSON has failed'
logging.info("This qid didn't work " + questionId)
return jsondata