1

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

4

2 回答 2

0

我想到的一个快速技巧是使用urllib.urlopen()withthreading.Timer()来模拟超时。但这只是快速而肮脏的黑客攻击。

于 2010-10-08T08:23:16.090 回答
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)

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

于 2013-04-30T17:07:53.343 回答