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()上,据报道该问题已在几年前修复。
那么是什么原因导致执行挂起,如何解决或解决该问题呢?
最佳答案
使用mechanize.Browser().open()
而不是urlopen
会显示一个“ urllib2.URLError urlopen connection time out
”,当单独使用urlopen
时不会出现该“ mechanize.Browser().open()
”。我强烈怀疑这是问题所在,我的解决方案是在所有情况下都使用urlopen
代替