aioredis 任务已被销毁但正在等待

时间:2021-02-16 11:44:17

标签: python redis python-asyncio aio

前提:

python 3.8
aioredis==1.3.0

有时在哨兵生产中会出现以下错误:

Task was destroyed but it is pending!
task: <Task pending name='Task-16349' coro=<RedisConnection._read_data() running at /usr/local/lib/python3.8/site-packages/aioredis/connection.py:183> wait_for=<Future pending cb=[<TaskWakeupMethWrapper object at 0x2ac9dc15e430>()]> cb=[RedisConnection.__init__.<locals>.<lambda>() at /usr/local/lib/python3.8/site-packages/aioredis/connection.py:165]>

有人遇到过吗? Рow你修好了吗?

一些附加信息。我们使用 aiohttp==3.7.3。 我的 Redis 客户端的一部分:

class RedisClient:
    redis: Optional[aioredis.Redis] = None
    encoding: str = 'utf-8'

    @classmethod
    async def create_redis_pool(cls):
        if cls.redis is None:
            redis_address = 'redis://%s:%d' % (settings.REDIS['host'], settings.REDIS['port'])
            cls.redis = await aioredis.create_redis_pool(
                redis_address,
                db=settings.REDIS['db'],
                minsize=settings.REDIS['minsize'],
                maxsize=settings.REDIS['maxsize'],
                timeout=10
            )
        return cls.redis

    ...

    @classmethod
    async def get(cls, key, encoding=encoding):
        return await cls.redis.get(key, encoding=encoding)

在应用程序启动时创建了一个到 redis 的连接池。

0 个答案:

没有答案