为什么这段python代码会在执行期间挂起?

时间:2012-06-13 19:07:15

标签: python python-2.7 mechanize urllib2

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()据报道几年前是固定的。

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

1 个答案:

答案 0 :(得分:1)

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