首页 > 解决方案 > APScheduler 如何在工作日设置不同的时间?

问题描述

我是 Python 新手。我的问题是如何设置在工作日工作的调度程序。从周一早上 8 点开始,到周五下午 5 点结束?

在此期间有多个间隔作业。

Job1 每小时一次,job2 每 4 小时一次。我可以使用不同的调度程序吗?喜欢

    def job1():
       print('job 1 hour')

    def job2():
       print('job 4 hour') 

    if __name__=='__main__':
       job1()
       job2()

       sched1 = BackgroundScheduler()
       sched2 = BackgroundScheduler()

       sched1.add_job(job1, 'interval', hours=1)
       sched2.add_job(job2, 'interval', hours=4)

       sched1.start()
       sched2.start()

我没有尝试上面的代码,因为我想不出第一部分是让它从周一上午 8 点到周五下午 5 点开始工作

标签: pythonapscheduler

解决方案


首先,为什么你有多个调度器?接下来,没有什么可以阻止您的应用程序在此处结束时退出,因此可以BlockingScheduler改用。

至于实际问题,也许CronTrigger是你想要的?您可以指定开始和结束工作日,因此job1使用 1 小时间隔,您可以执行以下操作:

from apscheduler.triggers.cron import CronTrigger

trigger1 = CronTrigger(day_of_week='mon', hour='8-')
trigger2 = CronTrigger(day_of_week='tue-thu', hour='*')
trigger3 = CronTrigger(day_of_week='fri', hour='-17')
sched.add_job(job1, 'or', trigger1, trigger2, trigger3)

对于job2,您可以使用hour='*/4'ontrigger2使其每隔 4 小时运行一次。


推荐阅读