Cron 从周一到周五,从9:30:42到15:00:42,每15分钟执行一次python脚本

Cron 从周一到周五,从9:30:42到15:00:42,每15分钟执行一次python脚本,cron,schedule,apscheduler,Cron,Schedule,Apscheduler,我需要一种方法,从周一到周五,每天从9:30:42到15:00:42,每隔15分钟执行一次python脚本 我已经用cron语法研究了APScheduler,但不知道如何编写上述条件。我在下面尝试了,但不起作用(execute是我的函数名) sched.add\u cron\u job(执行,一周中的一天class='周一至周五',小时class='9:30:42-15:00:42',分钟='*/15') 非常感谢任何一位指点者。据我所知,你无法用一份工作做你想做的事 这是我能得到的最接近的一个

我需要一种方法,从周一到周五,每天从9:30:42到15:00:42,每隔15分钟执行一次python脚本

我已经用cron语法研究了APScheduler,但不知道如何编写上述条件。我在下面尝试了,但不起作用(execute是我的函数名)

sched.add\u cron\u job(执行,一周中的一天class='周一至周五',小时class='9:30:42-15:00:42',分钟='*/15')


非常感谢任何一位指点者。

据我所知,你无法用一份工作做你想做的事

这是我能得到的最接近的一个:
30-59/15 9-14**1-5
,相当于每15分钟,从上午09:00到下午02:59,从周一到周五,每过一小时30到59分钟


虽然这并不完全是你想要的,但我希望这对你有所帮助。

据我所知,你无法用一份工作做你想做的事

这是我能得到的最接近的一个:
30-59/15 9-14**1-5
,相当于每15分钟,从上午09:00到下午02:59,从周一到周五,每过一小时30到59分钟


虽然这并不是您想要的,但我希望这对您有所帮助。

我编写了自定义代码来解决我的问题。在这里张贴,以防对某人有所帮助。欢迎提出任何优化建议

第一个无限循环在到达开始时间时开始作业。第二个无限循环每x分钟唤醒一次,以检查是否已接近下一个运行时间。如果是,它将执行其他操作,然后返回睡眠状态。如果已达到执行的结束时间,则它将中断

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)

我编写了自定义代码来解决我的问题。在这里张贴,以防对某人有所帮助。欢迎提出任何优化建议

第一个无限循环在到达开始时间时开始作业。第二个无限循环每x分钟唤醒一次,以检查是否已接近下一个运行时间。如果是,它将执行其他操作,然后返回睡眠状态。如果已达到执行的结束时间,则它将中断

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)