【发布时间】:2020-05-04 10:46:01
【问题描述】:
我有以下代码:
from discord.ext import commands
bot = commands.Bot(command_prefix= prefix)
big_var = {}
@bot.command(name='func1')
@commands.max_concurrency(1, wait = True)
async def func1(ctx):
func1code(big_var)
bot.run(TOKEN)
如果上次使用 big_var 是 X 分钟前,我想运行函数 clear_data(big_var),以节省内存。
我试过了:
from discord.ext import commands
bot = commands.Bot(command_prefix= prefix)
big_var = {}
@bot.command(name='func1')
@commands.max_concurrency(1, wait = True)
async def func1(ctx):
func1code(big_var)
await asyncio.sleep(600)
clear_data(big_var)
bot.run(TOKEN)
但这会阻止函数func1() 完成,并且max_concurrencydecorator 将只允许一次运行func1() 的1 个实例。
我该如何解决这个问题?
编辑:重写问题以使其更清晰
【问题讨论】:
-
这似乎有点宽泛,并且是已经有可用信息的主题。你能说得更具体点吗?
-
您要求的是缓存的标准用例,即如果生存时间已过,则删除对象。 Python内置了
lru_cache,但不确定是否支持TTL。
标签: python