gpt4 book ai didi

python - 根据 cron spec 计算下一个预定时间

转载 作者:太空狗 更新时间:2023-10-29 17:29:01 24 4
gpt4 key购买 nike

在给定当前时间和 cron 规范的情况下,计算事件下一次运行时间的有效方法是什么?

除了“每分钟循环检查它是否符合规范”之外,我正在寻找其他东西。

规范示例可能是:

  • 每月1号和15号15:01
  • 在每小时的 10、20、30、40、50 分钟

Python 代码会很不错,但伪代码或高级描述也很受欢迎。

[更新] 假设规范已经被解析并且采用了某种合理的格式。

最佳答案

只是看看它,我认为你需要:

  • 将 chron 规范解析为包含每个字段可接受值的五个数组;
  • 将“现在”解析为每个字段的值;
  • 按分钟、小时、{day-of-month OR day-of-week}、month-of-year 的顺序:找到匹配或超过当前值的最低数组值,并进行进位校正。

我不知道如何同时处理星期几和星期几;我确信有办法,但另一方面,我认为我从未见过实际指定两者的规范。我认为为其中任何一个编写一个处理程序就足够了,如果您同时收到这两个则抛出错误。

编辑:显然,如果同时指定了星期几和星期几,它应该在两者 上触发 - 即如果规则是 ' 15号,星期三'每15号每周三触发。

croniter 包做你想做的事:

import croniter
import datetime

now = datetime.datetime.now()
sched = '1 15 1,15 * *' # at 3:01pm on the 1st and 15th of every month
cron = croniter.croniter(sched, now)

for i in range(4):
nextdate = cron.get_next(datetime.datetime)
print nextdate

打印

2011-01-15 15:01:00
2011-02-01 15:01:00
2011-02-15 15:01:00
2011-03-01 15:01:00

不过如果它被写成一个实际的迭代器就好了。也许我有我的下一个项目 ;-)

关于python - 根据 cron spec 计算下一个预定时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4610904/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com