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

我正在使用 mechanize 进行 urlopen。这段代码(和程序的其余部分)似乎可以运行好几个小时,但是在循环了这部分数千次之后,最终会挂在这部分代码的某个地方。

它会挂起无限长的时间。我什至回到它发现它已经挂在那里几个小时了。

谷歌搜索我提出的所有问题都是关于类似问题的报告,其中执行挂在 .read() 上,据报道该问题已在几年前修复。

那么是什么导致执行挂起,我该如何修复或解决它?

4

1 回答 1

1

使用mechanize.Browser().open()而不是urlopen显示单独urllib2.URLError urlopen connection time out使用时不会引发的“” 。urlopen我强烈怀疑这是问题所在,我的解决方案是mechanize.Browser().open()urlopen所有情况下都使用

于 2012-06-19T00:30:50.767 回答