Python模块之apscheduler

◆ 参考资料:
https://blog.csdn.net/somezz/article/details/83104368
◆ 只在首次执行任务异常:

正常运行完,下次的任务执行时间日志:

144 - 2018-11-23 01:12:10,230 - INFO - Job "SubmitData (trigger: interval[1 day, 0:00:00], next run at: 2018-11-24 01:00:00 CST)" executed successfully

没有执行任务的日志:

2018-11-22 00:00:04,084 base.py[line:120] run_job WARNING Run time of job "start (trigger: interval[1 day, 0:00:00], next run at: 2018-11-23 00:00:01 CST)" was missed by 0:00:03.061840

根据日志信息,报错原因为:

距离下次运行时间,错过了3秒,所有第二次就没有执行任务。

解决方法:

在add_job()中添加参数:

scheduler.add_job(start, 'interval', days=1, coalesce=True, misfire_grace_time=3600, start_date='2018-11-23 00:00:01', end_date='2019-12-30 11:59:59')

参数:

  • misfire_grace_time: 允许容错的时间,单位为:s(解决这个was missed by 这个报错)
  • coalesce:如果系统因某些原因没有执行任务,导致任务累计,为True则只运行最后一次,为False 则累计的任务全部跑一遍
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!对于使用 Pythonapscheduler 库来安排工作日任务,你可以使用 `apscheduler.triggers.combining` 模块中的 `OrTrigger` 和 `AndTrigger` 类来实现。首先,你需要定义一个表示工作日的触发器,然后将其与其他触发器组合在一起。 下面是一个示例代码,展示了如何使用 apscheduler 来安排工作日任务: ```python from apscheduler.schedulers.blocking import BlockingScheduler from apscheduler.triggers.combining import OrTrigger, AndTrigger from apscheduler.triggers.cron import CronTrigger from datetime import datetime # 定义一个触发器,表示工作日(周一至周五) weekday_trigger = OrTrigger([ CronTrigger(day_of_week='mon-fri'), ]) # 定义其他触发器,比如每天上午 10 点执行一次 daily_trigger = CronTrigger(hour=10) # 组合触发器,只有在工作日的上午 10 点才会触发任务 job_trigger = AndTrigger([weekday_trigger, daily_trigger]) # 定义任务函数 def job_function(): print("工作日任务执行于:", datetime.now()) # 创建调度器并添加任务 scheduler = BlockingScheduler() scheduler.add_job(job_function, trigger=job_trigger) # 启动调度器 scheduler.start() ``` 这段代码中,`CronTrigger` 类用于设置每周几或每天的特定时间,`OrTrigger` 和 `AndTrigger` 类用于组合不同的触发器。在这个例子中,我们定义了一个表示工作日的触发器和一个表示每天上午 10 点的触发器,然后使用 `AndTrigger` 将它们组合在一起,这样只有在工作日的上午 10 点才会触发任务。 希望这个示例对你有帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值