我有用于长期运行过程的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)

从插座读取每个块后,这将打印响应,而不是在收到整个响应之前。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top