fvck urllib

一个是urllib
最近的项目中有使用urllib去打开一个远程url并且获取返回的数据做进一步操作。

简单代码如下:

#!/usr/bin/python

import urllib

import re

SERVERLST 
= {}

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 16in <module>

     
line f.readline()

     
File "/usr/lib/python2.5/socket.py"line 331in readline

     data 
recv(1)

socket.error: (104'Connection reset by peer')

查阅了资料好像是服务器返回RST的时候客户端没有重新发送TCP请求,直接终止了。。。感觉这个问题总不能让用户去重新发起请求吧。

urllib下没啥解决办法,换用urllib2后解决。杯举,为啥这个改进的fix要新开个lib,原有的lib丢弃。。。搞不懂python咋想的了。

 

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):