python - 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 点开始工作
解决方案
首先,为什么你有多个调度器?接下来,没有什么可以阻止您的应用程序在此处结束时退出,因此可以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 小时运行一次。
推荐阅读
- sequelize.js - Sequelize ORM - 如何使模型具有一组对象,这些对象始终处于特定的持久顺序
- php - 如何在 PHP 中从数据库动态创建 switch 案例?
- java - 手动添加 NodeEntity、Id、GeneratedValue、RelationshipEntity 等(不使用注释)
- android - Android Drawable Importer 插件在 Android Studio 3.6 中不起作用
- asp.net-core - 在 JWT 令牌中传递租户 ID 是一种好习惯吗?
- flutter - Flutter Card vs Container Widget
- c - 如何从 C 中的宏之类的函数中仅提取已定义函数的名称?
- node.js - 如何访问在不同容器上运行的两个快速服务器之间的不同端点
- swift - 在 init() 构造函数中初始化的带有 @State 的 SwiftUI 视图
- android - 无法在 android studio 3.6 中进行 git pull