我有长时间运行进程的Web界面客户端。我想让该进程的输出显示出来。适用于urllib.urlopen()
,但它没有timeout
参数。另一方面,urllib2.urlopen()
输出被缓冲。有没有一种简单的方法可以禁用该缓冲区?
答案 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)
这将在从套接字读取每个块之后打印响应,而不是缓冲区,直到收到整个响应。