一个是urllib
最近的项目中有使用urllib去打开一个远程url并且获取返回的数据做进一步操作。
简单代码如下:
#!/usr/bin/python
import urllib
import re
SERVERLST = {}
f = urllib.urlopen('http://****/abcd**')
if f is None:
print "open error"
while True:
line = f.readline()
if not line:
break
print line
在多执行几次以后就会随机的报一个错误:
Traceback (most recent call last):
File "parsehosts.py", line 16, in <module>
line = f.readline()
File "/usr/lib/python2.5/socket.py", line 331, in readline
data = recv(1)
socket.error: (104, 'Connection reset by peer')
查阅了资料好像是服务器返回RST的时候客户端没有重新发送TCP请求,直接终止了。。。感觉这个问题总不能让用户去重新发起请求吧。
urllib下没啥解决办法,换用urllib2后解决。杯举,为啥这个改进的fix要新开个lib,原有的lib丢弃。。。搞不懂python咋想的了。
