首页 > 解决方案 > 通过 APSCHEDULER 在 python 中安排一个 cron 作业以每次在 1 和 31 分钟运行一个 python 脚本

问题描述

我必须每 1 分钟和 31 分钟运行一次 AP 调度程序 cron 作业。例如,如果它在 10.01 运行并且应该在 10.32 再次运行,那么它应该在 11.03 和 11.34 再次运行并且它应该在除周六和周日之外的所有日子重复运行。我试过了,但它不工作

我该怎么做

sched.jobs(jobs,'cron',day_of_week='mon-fri', hour=*, minute=*\31*)

标签: pythoncronapscheduler

解决方案


以上不是有效的 Python,可能不会运行。

  • *不带引号被解释为乘法运算符,但它位于非法位置。
  • 此外,cron 表达式*/31 * * * Mon-Fri意味着在可被 31 整除的分钟数上运行。您想要的 cron 表达式是1,31 * * * 1-5
  • 我不相信有一个jobs功能。

首先,您需要定义一个要调用的函数(我不确定jobs您的表达式是单个函数还是函数集合,但它应该只是一个函数):

def job():
    print("job starting")
    call(['touch', 'emptyfile'])

然后,使用add_job(not jobs)添加它

// create scheduler using a subclass of BaseScheduler
scheduler = BackgroundScheduler()
scheduler.configure(timezone='utc')

// cron would look like 1,31 * * * 1-5
scheduler.add_job(job, 'cron', day_of_week='1-5', hour='*', minute='1,31')
scheduler.start()

可以参考https://crontab.guru/https://apscheduler.readthedocs.io/en/stable/userguide.html


推荐阅读