2
try:
    html = urlopen('http://glbse.com/api/asset/' + asset.name)
except:
    print 'error while updating the price of ' + asset.name
    continue
json_txt = html.read()
ticker = json.loads(json_txt)
average_price = int(ticker['t24havg'])
if average_price == 0:
    average_price = int(ticker['t5davg'])
if average_price == 0:
    average_price = int(ticker['t7davg'])
if average_price == 0:
    average_price = int(ticker['latest_trade'])
if average_price == 0:
    print 'could not determine the price of ' + asset.name
    continue
asset.average_price = average_price

私はurlopenに機械化を使用しています。このコード (およびプログラムの残りの部分) は何時間も問題なく動作しているように見えますが、このセクションを何千回もループした後、コードのこのセクションのどこかで最終的にハングします。

無期限にハングします。私はそれが何時間もそこにぶら下がっていたことを発見するために戻ってきました。

問題をグーグルで検索すると、数年前に修正されたと報告されている .read() で実行がハングする、同様の問題のレポートが表示されます。

実行がハングする原因は何ですか?どうすれば修正または回避できますか?

4

1 に答える 1

1

mechanize.Browser().open()代わりに使用すると、単独で使用した場合は発生しないurlopen" " が表示されます。これが問題であると強く疑っています。私の解決策は、すべての場合に代わりに使用することですurllib2.URLError urlopen connection time outurlopenmechanize.Browser().open()urlopen

于 2012-06-19T00:30:50.767 に答える