我有一个aiohttp.web
应用,可以使用elasticsearch
和redis
与aioes
和aioredis
进行互动。它非常简单:一个事件循环和一些请求处理程序。它在测试服务器上运行正常,但在生产中,当服务器负载达到100 rps时,此错误开始随机出现:
CancelledError: null
File "visio_longer/views/communicate/receiver.py", line 80, in process_message
await self.process_ulog_batch(type, batch)
File "visio_longer/views/communicate/receiver.py", line 240, in process_ulog_batch
await self.redis.rpush("playback_item_playback", *playbacks_json)
File "asyncio/futures.py", line 361, in __iter__
yield self # This tells Task to wait for completion.
File "asyncio/tasks.py", line 296, in _wakeup
future.result()
File "asyncio/futures.py", line 266, in result
raise CancelledError
在随机位置和随机时间,elasticsearch
和redis
个客户端都会发生这种情况。服务器负载不超过5-10%,它不是弹性搜索/ redis超时问题(我试过导致超时和异常不同),它只是取消了我的未来。问题是:谁是谁? aiohttp,aioes和aioredis版本是pip的最新版本。