aio-libs/aiocache

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

Open

#472 opened on 2019年12月24日

GitHub で見る
 (8 comments) (1 reaction) (1 assignee)Python (177 forks)auto 404
buggood first issue

Repository metrics

Stars
 (1,432 stars)
PR merge metrics
 (30d に merged 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

コントリビューターガイド