Aiocache @cached装饰器不会返回结果

时间:2019-12-18 09:22:46

标签: python-3.x caching redis python-asyncio nats.io

我正在使用aiocache @cached装饰器来缓存asyncio NATS请求,并且在将数据返回给客户端时遇到问题 我的代码:

@cached(key="result", ttl=1000, cache=Cache.REDIS, serializer=JsonSerializer(), port=6379)
async def timed_nats_request(self, topic, msg, timeout=None):
    await asyncio.sleep(10)
    msg = json.dumps(msg)
    response = await self.nc.nc.timed_request(topic, msg.encode('utf-8'), timeout=20.0)
    result = json.loads(response.data)
    if 'result' in result:
        return result['result']
    else:
        return result

Aiocache的@cached装饰器将我的消息缓存到Redis,但不将其返回给客户端,所以我的意思是我可以从Redis数据库中找到缓存的数据,但它不通过函数(timed_nats_request)返回它

我的缓存配置:

caches.set_config({
    'default': {
        'cache': "aiocache.SimpleMemoryCache",
        'serializer': {
            'class': "aiocache.serializers.JsonSerializer"
        }
    },
    'redis_alt': {
        'cache': "aiocache.RedisCache",
        'endpoint': "127.0.0.1",
        'port': 6379,
        'timeout': 100,
        'serializer': {
            'class': "aiocache.serializers.JsonSerializer"
        },
        'plugins': [
            {'class': "aiocache.plugins.HitMissRatioPlugin"},
            {'class': "aiocache.plugins.TimingPlugin"}
        ]
    }
})

请帮帮我!

1 个答案:

答案 0 :(得分:0)

最后,我找到了解决方案:我总是使用相同的参数,因此由于生成不同的键,因此应该使用不带键参数的key_builder。 :)