【发布时间】:2013-07-10 16:53:13
【问题描述】:
现在我正在这样做:(Python3,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.
这是怎么回事;
我不断收到来自服务器的 gzip 响应并且我保持登录状态(我正在获取一些如果我没有登录则不可用的内容)但我认为每个请求 opener.open 之间的连接正在断开;
我认为这是因为连接速度很慢,而且似乎每次都有新的连接。两个问题:
a)我如何测试连接实际上是否保持活动/死亡
b)如何让它在请求其他 url 之间保持活跃?
保重:)
【问题讨论】:
-
a) 嗅探流量将是检查您是否保持活动状态的一种简单方法。确保服务器也支持keepalive。至于b),至少在python2.x中有一种方法可以指定一个可以keepalive的handler,但是好像不是默认的。
-
嗯,首先这是python3,另一个线程中推荐的这个urlgrabber应该是2.5和之前的,其次我宁愿避免使用外部库来完成这个看似简单的任务;特别是因为我想了解这些事情是如何运作的
标签: python http keep-alive