我需要做的是通过HTTP读取块中的文件(具体来说要逐行重复)。我想 不 读取整个文件(或文件的很大一部分),然后将其拆分为几行,而是读取一小块(<= 8kB)块,然后分成几行。当块中的所有行都用完后,再接收下一个块。
我尝试了以下方法:
with urllib.request.urlopen(url) as f:
yield from f
哪个没用。在Wireshark中,我发现仅通过调用urlopen(url)
就收到了约140kB的总空间〜220kB。
我接下来尝试使用requests
:
with requests.get(url, stream=True) as req:
yield from req.iter_lines()
仅通过调用get(url, stream=True)
也可以读取大约140kB。根据{{3}},这不应发生。除此之外,我没有找到有关此行为或如何控制它的任何信息。我在Windows 10上使用的是Requests 2.21.0,CPython 3.7.3。