aio-libs/aiocache

Clear() method with 'namespace' parameter fails: TypeError: delete() missing 1 required positional argument: 'key'

Open

#472 创建于 2019年12月24日

在 GitHub 查看
 (8 评论) (1 反应) (1 负责人)Python (177 fork)auto 404
buggood first issue

仓库指标

Star
 (1,432 star)
PR 合并指标
 (30 天内没有已合并 PR)

描述

I want to use certain namespace while cleaning redis cache, like below: coros.append(asyncio.ensure_future(cache.clear(namespace='main'))) Error occured when redis cache doesn't have key with namespace 'main' : coros.append(asyncio.ensure_future(cache.clear(namespace='dialog_api')))

I've found the problem in file aiocache/backends/redis.py in 187 line:

async def _clear(self, namespace=None, _conn=None):
        if namespace:
            keys = await _conn.keys("{}:*".format(namespace))
            await _conn.delete(*keys)
        else:
            await _conn.flushdb()
        return True

So, I want to fix it by adding if statement, like:

async def _clear(self, namespace=None, _conn=None):
        if namespace:
            keys = await _conn.keys("{}:*".format(namespace))
            if keys:
                await _conn.delete(*keys)

I could be wrong or miss something, if anybody faced with it please comment

贡献者指南