我正在使用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"}
]
}
})
请帮帮我!
答案 0 :(得分:0)
最后,我找到了解决方案:我总是使用相同的参数,因此由于生成不同的键,因此应该使用不带键参数的key_builder。 :)