在尝试使我的一个 python 应用程序在连接中断的情况下更加健壮时,我发现调用 urllib2 生成的 http-stream 的读取函数可能会永远阻止脚本。
我认为读取函数将超时并最终引发异常,但是当连接在读取函数调用期间中断时,情况并非如此。
以下是会导致问题的代码:
import urllib2
while True:
try:
stream = urllib2.urlopen('http://www.google.de/images/nav_logo4.png')
while stream.read(): pass
print "Done"
except:
print "Error"
(如果您尝试使用该脚本,您可能需要多次中断连接,然后才能达到该脚本永远无法恢复的状态)
我通过 Winpdb 观看了脚本,并截取了脚本永远无法恢复的状态(即使网络再次可用)。
Winpdb http://img10.imageshack.us/img10/6716/urllib2.jpg
有没有办法创建一个即使网络连接中断也能继续可靠工作的python脚本?(我宁愿避免在额外的线程中这样做。)