未封闭的urllib2.urlopen
题
我有用于长期运行过程的Web接口的客户端。我想从该过程中输出来显示。效果很好 urllib.urlopen()
, ,但没有 timeout
范围。另一方面 urllib2.urlopen()
输出被缓冲。有没有简单的方法禁用该缓冲区?
解决方案
我发生的快速黑客是使用 urllib.urlopen()
和 threading.Timer()
模仿超时。但这只是快速而肮脏的黑客。
其他提示
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)
从插座读取每个块后,这将打印响应,而不是在收到整个响应之前。
不隶属于 StackOverflow