在https://docs.aiohttp.org/en/stable/streams.html文档中,有三种异步处理块响应的方法:
iter_chunked: Iterates over data chunks with maximum size limit
iter_any: Iterates over data chunks in order of intaking them into the stream
iter_chunks: Iterates over data chunks as received from the server
我不明白它们之间有什么区别,我应该使用什么来下载文件块。as received from the server
-这是什么意思?与iter_chunked的唯一区别是iter_chunked带有最大大小参数吗?intaking them into the stream
-它与as received from the server
有何不同?
1条答案
按热度按时间qkf9rpyu1#
如果您知道内容的最大大小,但并非所有服务器都给予Content-Length标头(尽管响应中包含文件),则使用
iter_chunked
(这是因为某些服务器违反标准并实现其自己的逻辑),所以iter_chunks
应该是一个任何情况下的解决方案,无论你是否知道最大大小。没有关于iter_any
的线索。如果我是您,我会在测试iter_any
之前先测试iter_chunks
,在文档AFAIK中有这两种方法的示例或者,您可以使用如下的while循环在aiohttp客户端下载文件:
aiofiles.open()是open()的异步版本有关aiofiles的更多信息,请单击此处:https://pypi.org/project/aiofiles/