request.Response.iter_content是否可以返回空块?

时间:2017-12-26 12:26:59

标签: python python-requests

在许多StackOverflow问题和答案中,例如12或......以及网络上的许多其他地方,人们使用以下模式使用{{1}检索结果}:

iter_content

for chunk in r.iter_content(chunk_size=512 * 1024): if chunk: # filter out keep-alive new chunks f.write(chunk) 条件是否真的有必要,特别是当块大小是像这里一样的正整数时?

底层代码是否已处理此案例?对我来说,似乎确实如此,请参阅34 ...

检查空块是否仍然是一个好习惯?

P.S。我知道请求文档建议执行此操作for iter_lines

if chunk:

此问题仅与for line in r.iter_lines(): # filter out keep-alive new lines if line: 有关。

更新

以另一种方式看待这一点也很有趣:

因此,即使使用iter_content写入文件,人们也不应该担心这些事情。

1 个答案:

答案 0 :(得分:1)

你是完全正确的,测试chunk是非空的是多余的。 requestsurllib3 中的整个代码路径已经确保您只能获得非空的块。

底层代码确实需要检查空块;那些可能是由网络延迟和/或解压缩引起的(没有足够的数据到达解压缩另一个块)。