每天使用扭曲重置redis键

时间:2014-05-20 08:16:30

标签: python linux redis twisted cronexpression

我正在使用扭曲引擎和Redis。 我需要每天清除一些redis键(在12点钟,以保持日常数据)。

我尝试使用task.LoopingCall工作正常。它会在24小时后清除键,但问题是,为了解决这个问题,我需要在12点钟启动引擎。所以LoopingCall可以设置24小时。

不是在12点钟启动引擎,是否有更好的方法使用twisted& amp; redis自己?

据我所知,我们可以使用crone工作来做到这一点。但它是好还是有其他选择?

1 个答案:

答案 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())
)