在 Python 3.3+ http.client
(或任何其他内置的 Python HTTP 客户端库)中使用,我如何才能一次准确地读取一个分块的 HTTP 响应一个 HTTP 块?
http.client
我正在为使用 HTTP 的分块传输编码写入响应的服务器扩展现有的测试夹具(使用 python 编写)。为了简单起见,假设我希望能够在客户端接收到 HTTP 块时打印一条消息。
我的代码遵循一个相当标准的模式来读取大量响应:
conn = http.client.HTTPConnection(...)
conn.request(...)
response = conn.getresponse()
resbody = []
while True:
chunk = response.read(1024)
if len(chunk):
resbody.append(chunk)
else:
break
conn.close();
但是无论服务器是发送 10 字节块还是 10MiB 块,这都会读取 1024 字节块。
我正在寻找的是以下内容:
while True:
chunk = response.readchunk()
if len(chunk):
resbody.append(chunk)
else
break
如果这是不可能的http.client
,是否可以使用另一个内置的 http 客户端库?如果无法使用内置客户端库,是否可以使用可pip
安装模块?