在许多StackOverflow问题和答案中,例如1,2或......以及网络上的许多其他地方,人们使用以下模式使用{{1}检索结果}:
iter_content
但for chunk in r.iter_content(chunk_size=512 * 1024):
if chunk: # filter out keep-alive new chunks
f.write(chunk)
条件是否真的有必要,特别是当块大小是像这里一样的正整数时?
底层代码是否已处理此案例?对我来说,似乎确实如此,请参阅3,4 ...
检查空块是否仍然是一个好习惯?
P.S。我知道请求文档建议执行此操作for iter_lines
:
if chunk:
此问题仅与for line in r.iter_lines():
# filter out keep-alive new lines
if line:
有关。
以另一种方式看待这一点也很有趣:
因此,即使使用iter_content
写入文件,人们也不应该担心这些事情。
答案 0 :(得分:1)
你是完全正确的,测试chunk
是非空的是多余的。 requests
和urllib3
中的整个代码路径已经确保您只能获得非空的块。
底层代码确实需要检查空块;那些可能是由网络延迟和/或解压缩引起的(没有足够的数据到达解压缩另一个块)。