使用urllib2和simplejson进行无限循环

时间:2012-12-27 21:01:21

标签: python json urllib2 urllib simplejson

当json响应指示无效请求时,以下代码表现出奇怪的行为。代码将记录响应,然后点击“if”块,代码将记录响应并立即再次跳转到第一个日志调用,并重试json / urlopen调用等。此过程将无限重复,直到我终止进程。请注意,当json响应表明url和查询有效且正常时,程序流程正如您所期望的那样。

log.debug('Retreiving json response for %s' % url)
response = simplejson.load(urllib2.urlopen(url))
log.debug('Retreived json response: %s' % response)
if response['status'] in ['INVALID_REQUEST', 'REQUEST_DENIED', 'UNKNOWN_ERROR']:
    print 'Problem with request: %s' % response['status']

为了证明这个问题,我已经包含了生成日志的示例:

2012-12-26 09:41:31,505 - json_logger - DEBUG - Retreiving json response for ...
2012-12-26 09:41:31,510 - json_logger - DEBUG - Retreived json response: {'status': 'INVALID_REQUEST', 'results': []}
2012-12-26 09:41:31,512 - json_logger - DEBUG - Retreiving json response for ... 
2012-12-26 09:41:31,530 - json_logger - DEBUG - Retreived json response: {'status': 'INVALID_REQUEST', 'results': []} ...

1 个答案:

答案 0 :(得分:0)

您是否可以避免使用simplejson的实现,只需执行以下操作即可?

response = simplejson.loads(urllib2.urlopen(url).read())

我使用加载而不是加载,加载字符串,只是在你创建的urllib2对象上调用read方法