我正在使用扭曲引擎和Redis。 我需要每天清除一些redis键(在12点钟,以保持日常数据)。
我尝试使用task.LoopingCall工作正常。它会在24小时后清除键,但问题是,为了解决这个问题,我需要在12点钟启动引擎。所以LoopingCall可以设置24小时。
不是在12点钟启动引擎,是否有更好的方法使用twisted& amp; redis自己?
据我所知,我们可以使用crone工作来做到这一点。但它是好还是有其他选择?
答案 0 :(得分:1)
假设您想要在凌晨12:00 本地时清除这些密钥,首先您需要安装tzlocal
软件包:
$ pip install tzlocal
然后你可以计算到下一个时区的时间,如下所示:
from tzlocal import get_localzone
zone = get_localzone()
import datetime
now = datetime.datetime.now(zone)
next_midnight = (now.replace(hour=0, minute=0, second=0, microsecond=0) +
datetime.timedelta(days=1))
delta = then - now
until_next_midnight = delta.total_seconds()
最后,你可以在那时开始你的LoopingCall
,如下所示:
call = LoopingCall(...)
reactor.callLater(
until_next_midnight,
lambda: call.start(datetime.timedelta(days=1).total_seconds())
)