unbuffered urllib2.urlopen

时间:2010-10-08 08:20:40

标签: python urllib2 urllib buffering urlopen

我有长时间运行进程的Web界面客户端。我想让该进程的输出显示出来。适用于urllib.urlopen(),但它没有timeout参数。另一方面,urllib2.urlopen()输出被缓冲。有没有一种简单的方法可以禁用该缓冲区?

2 个答案:

答案 0 :(得分:0)

我遇到的一个快速入侵是使用urllib.urlopen()threading.Timer()来模拟超时。但那只是快速而又肮脏的黑客。

答案 1 :(得分:0)

只需拨打urllib2

即可暂停

read()

您可以定义要读取的大小,从而禁用缓冲。

例如:

import urllib2

CHUNKSIZE = 80

r = urllib2.urlopen('http://www.python.org')
while True:
    chunk = r.read(CHUNKSIZE)
    if not chunk:
        break
    print(chunk)

这将在从套接字读取每个块之后打印响应,而不是缓冲区,直到收到整个响应。