次のコードは、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': []} ...