如何安排python函数使用apscheduler在特定分钟(例如00、10、20)每小时运行一次

时间:2019-06-24 08:58:30

标签: python cron scheduled-tasks apscheduler

我尝试将脚本中的函数安排在每小时的特定时间运行,即,如果脚本在11.46处开始运行,则函数在11.50、12.00、12.10等处运行,如果失败,则执行相同的操作,并且重新启动。我已经看到可以通过命令行使用cron来做到这一点,但是当脚本使用调度程序运行时,有没有办法做到这一点?

我已经创建了一个调度程序,该脚本在脚本启动后每10分钟运行一次,但是我希望函数在特定的分钟上运行,而不仅仅是特定的时间间隔。

from apscheduler.schedulers.background import BackgroundScheduler
import atexit

def demo_job:
    print("test")

try:
    sched = BackgroundScheduler(daemon=True)
    sched.add_job(demo_job, trigger='interval', minutes=10)
    sched.start()
    atexit.register(lambda: sched.shutdown(wait=False))
except:
    print("Unexpected error:")

如果我的脚本从11.47开始运行,则该函数的第一个计划调用位于11.57,下一个是12.07、12.17等...我希望第一次运行是在12.00,下一个是12.10、12.20等

1 个答案:

答案 0 :(得分:1)

您可以尝试使用cron trigger

sched.add_job(
    demo_job, 
    trigger='cron',
    minute='*/10',
    hour='*'
)

表达式*/10从最小值开始,每10分钟触发一次作业。 Crontab ref