2

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

1 に答える 1

0

simplejson の実装を使用せずに、次のことを実行できますか?

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

load の代わりに load を使用して文字列をロードし、作成した urllib2 オブジェクトで read メソッドを呼び出すだけです

于 2012-12-27T21:49:12.373 に答える