提问人:S. B. 提问时间:10/31/2023 更新时间:10/31/2023 访问量:8
不同内容类型的 AIOHTTP AWIT 行为不一致
aiohttp inconsistent await behavior for different content types
问:
我正在尝试编写一个服务器,该服务器可以为我传递一个长请求,获取该请求的响应,然后将响应返回给我。
我遇到的是,响应正文在响应正文的等待中似乎以不同的方式处理,具体取决于它是文本还是文件。
例:
async def retransmit_GET(self,path):
async with aiohttp.ClientSession() as session:
async with session.get(path) as resp:
headers = ParseMultiDict(resp.headers) #convert MultiDictProxy to a simple dictionary
if headers['Content-Type'] not 'application/json':
#THIS DOESN'T WORK
#await resp.content.read()
#return resp
#THIS DOES WORK
file_content = await resp.content.read()
return web.Response(body=file_content, status=resp.status, headers=headers)
else:
await resp.text()
return resp
async def receive_GET(self, request):
try:
result = await self.retransmit_GET(self,request.rel_url.path)
headers = ParseMultiDict(result.headers)
if headers['Content-Type'] not 'application/json':
#### THIS IS THE LINE THAT WILL THROW THE EXCEPTION
return web.Response(body=result.content.read(), status=result.status, headers=headers)
else:
return web.Response(text=await result.text(), status=result.status, headers=headers)
except Exception as e:
print('EXCEPTION:", e)
为什么我可以在 text() 的情况下等待正文,然后正确传递正文,但是当我在不创建新对象的情况下对内容执行相同的操作时,它只是在尝试读取此函数之外的 resp.content 时返回“EXCEPTION: Connection closed”?
答: 暂无答案
评论