我有以下代码,用于试图对从 http.client.HTTPSConnection 发送的 API get 请求的响应进行分块处理(请注意,响应是 gzip 编码的):
connection = http.client.HTTPSConnection(api, context = ssl._create_unverified_context())
connection.request('GET', api_url, headers = auth)
response = connection.getresponse()
while chunk := response.read(20):
data = gzip.decompress(chunk)
data = json.loads(chunk)
print(data)
这总是会报错,说它不是一个gzip文件(b'\xe5\x9d')。我不确定我如何分块数据并仍然实现我在这里尝试做的事情。基本上,我正在分块以便我不必将整个响应加载到内存中。
请注意,我不能使用任何其他库,例如requests、urllib等。
16 + zlib.MAX_WBITS
感到困惑。这似乎是一些技巧,可以使用 zlib 打开 gzip 文件?。也可以直接使用gzip.GzipFile(fileobj=response)
打开 gzip 文件。 - asynts