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

问题描述 投票:0回答:1

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

for chunk in r.iter_content(chunk_size=512 * 1024): 
    if chunk: # filter out keep-alive new chunks
        f.write(chunk)

但是if chunk:条件真的是必要的,特别是当块大小是像这里的正整数时?

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

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

附:我知道请求文档建议这样做for iter_lines

for line in r.iter_lines():

    # filter out keep-alive new lines
    if line:

这个问题只是关于iter_content

更新

从另一个角度看这个也很有趣:

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

python python-requests
1个回答
1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.