从周一到周五 9:30:42 到 15:00:42 每天每 15 分钟执行一次 python 脚本
Execute python script every 15 mins starting from 9:30:42 till 15:00:42 every day from Mon-Fri
我需要一种方法,从 9:30:42 到 15:00:42 从周一到周五,每天每 15 分钟执行一次我的 python 脚本。
我已经使用 cron 语法探索了 APScheduler,但无法弄清楚如何编写上述条件。我在下面试过但没有用(execute 是我的函数名)
sched.add_cron_job(execute, day_of_week='mon-fri', hour='9:30:42-15:00:42', minute='*/15')
非常感谢任何指点。
据我所知,你无法通过一份工作完成你想做的事情。
这是我能得到的最接近的一个:30-59/15 9-14 * * 1-5
等同于 每 15 分钟,在整点的第 30 到 59 分钟,在 09:00 AM 和 02:59 下午,周一至周五.
虽然这不是您想要的,但我希望这对您有所帮助 base。
我编写了自定义代码来解决我的问题。在这里张贴以防它帮助某人。欢迎任何优化建议。
第一个无限循环在达到开始时间时开始作业。第二个无限循环每 x 分钟唤醒一次,以检查下一个 运行 时间是否临近。如果是,则执行 else 返回休眠。如果到了执行结束时间,则中断
def execute_schedule_custom():
start_time_of_day = datetime.combine(date.today(), time(9, 30, 42))
next_run_time = start_time_of_day
end_time_of_day = datetime.combine(date.today(), time(15, 0, 42))
interval = 15
sleep_secs = 60 * 5 #sleep for 5 mins
while True:
if datetime.now() >= start_time_of_day:
execute()
next_run_time = start_time_of_day + timedelta(minutes=interval)
break
while True:
if datetime.now() >= end_time_of_day:
break
elif datetime.now() >= next_run_time:
execute()
next_run_time = next_run_time + timedelta(minutes=interval)
t.sleep(sleep_secs)
我需要一种方法,从 9:30:42 到 15:00:42 从周一到周五,每天每 15 分钟执行一次我的 python 脚本。
我已经使用 cron 语法探索了 APScheduler,但无法弄清楚如何编写上述条件。我在下面试过但没有用(execute 是我的函数名)
sched.add_cron_job(execute, day_of_week='mon-fri', hour='9:30:42-15:00:42', minute='*/15')
非常感谢任何指点。
据我所知,你无法通过一份工作完成你想做的事情。
这是我能得到的最接近的一个:30-59/15 9-14 * * 1-5
等同于 每 15 分钟,在整点的第 30 到 59 分钟,在 09:00 AM 和 02:59 下午,周一至周五.
虽然这不是您想要的,但我希望这对您有所帮助 base。
我编写了自定义代码来解决我的问题。在这里张贴以防它帮助某人。欢迎任何优化建议。
第一个无限循环在达到开始时间时开始作业。第二个无限循环每 x 分钟唤醒一次,以检查下一个 运行 时间是否临近。如果是,则执行 else 返回休眠。如果到了执行结束时间,则中断
def execute_schedule_custom():
start_time_of_day = datetime.combine(date.today(), time(9, 30, 42))
next_run_time = start_time_of_day
end_time_of_day = datetime.combine(date.today(), time(15, 0, 42))
interval = 15
sleep_secs = 60 * 5 #sleep for 5 mins
while True:
if datetime.now() >= start_time_of_day:
execute()
next_run_time = start_time_of_day + timedelta(minutes=interval)
break
while True:
if datetime.now() >= end_time_of_day:
break
elif datetime.now() >= next_run_time:
execute()
next_run_time = next_run_time + timedelta(minutes=interval)
t.sleep(sleep_secs)