2010-12-08 48 views
4

现在我这样做:(Python3,urllib的)如何生存在HTTP/1.1使用Python的urllib

url = 'someurl' 
headers = '(('HOST', 'somehost'),/ 
      ('Connection', 'keep-alive'),/ 
      ('Accept-Encoding' , 'gzip,deflate')) 
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor()) 
for h in headers: 
    opener.addheaders.append(x) 
data = 'some logging data' #username, pw etc. 
opener.open('somesite/login.php, data) 

res = opener.open(someurl) 
data = res.read() 
... some stuff here... 
res1 = opener.open(someurl2) 
data = res1.read() 
etc. 

正在发生的事情是这样的;我保持登录状态(如果我没有登录,我正在获取一些不可用的内容),但是我认为每个请求之间的连接正在断开。opener.open;

我认为,因为连接速度很慢,每次都有新的连接。两个问题:

a)如何测试连接是否处于活动状态/正在死亡
b)如何使其在其他URL的请求之间保持活动状态?

照顾:)

+0

a)嗅探流量将是检查您是否保持活力的微不足道的方法。确保服务器也支持keepalive。至于b),至少在python2.x中有一种方法可以指定一个可以存活的处理程序,但它似乎并不是默认的。 – Robert 2010-12-08 08:12:12

回答

1

这将是一个非常延迟的答案,但:

您应该看到urllib3。它适用于Python 2.x,但当您看到自己的README文档时您会明白。

是的,urllib的默认情况下不保持连接活着,我现在正在实施urllib3为Python 3将留在我的toolbag :)

0

只是,如果你还不知道,蟒蛇,请求提供保持活着的功能,感谢urllib3。