使用每个结果ttl记录异步python调用
aiomemoizettl的Python项目详细描述
艾米莫伊泽特
使用每个结果ttl记录asyncio python调用
安装
pip install aiomemoizettl
用法
对于其参数可散列的协程,可以通过将其传递给memoize_ttl
以及将其返回值转换为ttl的函数来创建memoided版本。
例如,下面的
importasynciofromaiomemoizettlimportmemoize_ttlasyncdefmain():memoized=memoize_ttl(coro,get_ttl=lambdaresult:result['ttl'])results=awaitasyncio.gather(*[memoized(1),memoized(2),])awaitasyncio.sleep(1)results=awaitasyncio.gather(*[memoized(1),memoized(2),# Will used the cached value of `coro(2)`])asyncdefcoro(value):print('Inside coro',value)return{'ttl':value,'some-other':'data'}loop=asyncio.get_event_loop()loop.run_until_complete(main())loop.close()
将输出
Inside coro 1
Inside coro 2
Inside coro 1