为什么我要等待response.read(),但我没有;不需要等待响应.状态



我不了解异步请求是如何工作的。这里我有一个使用POST请求发送图像的功能:

async def post_img(in_url, in_filepath, in_filename):
with open(in_filepath, 'rb') as file:
in_files = {'file': file}
async with ClientSession() as session:
async with session.post(in_url, data=in_files) as response:
status = response.status
response = await response.read()
print(response)

为什么我可以在不等待的情况下读取响应状态?如果我没有等待请求完成,我怎么能告诉它已经完成?

为什么我可以在不等待的情况下读取响应状态?

因为在编写async with session.post(...)时,您已经在隐含地等待它了。async with session.post(...) as response读取响应标头,并在response对象中公开其数据。状态代码在响应开始时到达,可用于任何正确的响应。

您必须使用await response.read()等待响应body,因为正文的内容不是请求对象的一部分。由于主体可以是任意大小的,自动读取可能会花费太多时间并耗尽可用内存。

最新更新