读取回复时出现ClientPayloadError

时间:2018-12-06 06:09:28

标签: aiohttp

从服务器读取数据时,出现ClientPayloadError。数据是JSON。我正在使用python 3.6.5和aiohttp 3.4.4

在调试时,似乎检测到紧密连接,并且在获取aiohttp时尝试查看它是否已完成读取,并且由于不是,所以它引发了此异常。

我正在使用读取数据

等待response.text()

但是我试图将其更改为读取来自大块内容的响应,看看是否能使问题消失,但是我遇到了同样的问题。

所以我想知道的是在关闭错误连接的地方是否正在发生某些事情。也许我已经读完的连接正在关闭,而尚未完成其数据的连接正在接收该信号?那可能吗 ?似乎这里提到了一些东西: Python asyncio/aiohttp: What are the requirements regarding BaseProtocol.connection_lost()?

1 个答案:

答案 0 :(得分:0)

似乎答案最终是在代码的异步部分中调用JSON解码。那是一项封锁行动。因此,发生解码时,传输层超时了。我从异步部分中删除了该操作,它似乎可以正常工作。

但是最终,我不知道是什么超时。很高兴知道。

这似乎可行:

return_data =等待response.text()

然后,我在代码的同步部分对返回数据进行解码。奇怪的是response.json()无法正常工作(或引起了相同的问题)...但是我认为这样做是可以的,因为它来自同一包。