在尝试使我的一个python应用程序在连接中断的情况下更加健壮时,我发现调用urllib2创建的http-stream的read函数可能会永久阻止脚本.
我认为读取函数将超时并最终引发异常,但是当读取函数调用期间连接中断时,这种情况并不接近.
以下是导致问题的代码:
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"
Run Code Online (Sandbox Code Playgroud)
(如果您尝试使用该脚本,则可能需要多次中断连接才能达到脚本永远无法恢复的状态)
我通过Winpdb观看了脚本,并制作了脚本永远无法恢复的状态的屏幕截图(即使网络再次可用).
Winpdb http://img10.imageshack.us/img10/6716/urllib2.jpg
有没有办法创建一个即使网络连接中断也能继续工作的python脚本?(我宁愿避免在一个额外的线程中这样做.)
尝试类似的东西:
import socket
socket.setdefaulttimeout(5.0)
...
try:
...
except socket.timeout:
(it timed out, retry)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2644 次 |
| 最近记录: |