apscheduler定时任务报错

最近使用的定时任务遇到了2个问题,简单记录一下

Run time of job xxxx was missed!

我用的是BackgroundScheduler,创建的任务进jobstore调度,然后executor执行。executor是用多线程执行job的,这个报错就是说这个任务的执行时间到了,但是没有空闲的线程可以用。

BackgroundScheduler还有一个misfire_grace_time参数,当线程都忙时,会等待多久,默认是1s。
综上,原因就是某个时刻,某个job的执行时间到了,但是所有线程都忙,等了misfire_grace_time时间后依然没有线程空出来,所有就报run time of job was missed!

综上,解决办法有2种:

  1. 增加executor中并发的线程数量;
  2. 增加等待时间,也就是misfire_grace_time

executor默认的线程数是10,如果无法确定自己使用的是几,可以自己多加几个定时任务试出来,测试示例:

from apscheduler.schedulers.background import BackgroundScheduler
from loguru import logger
import threading
import timescheduler_plan = BackgroundScheduler(timezone='Asia/Shanghai')
# 定义多个定时任务,比如20个,同时启动
@register_job(scheduler_plan, "interval", seconds=10, replace_existing=True)
def task1():#  打印线程名称 ,看执行了几个任务后使用了相同的线程logger.info(“task1, {}.format(threading.current_thread().name)# 避免任务太快结束,增加sleeptime.sleep(10)try:# 启动scheduler_plan.start()# 定时任务是后来运行的,python执行完任务就没了,所以这里要添加sleep,否则无法看到任务执行的过程打印,sleep时间根据定时任务数量控制time.sleep(20)
except Exception as e:logger.error("".format(e))# 有错误就停止定时器scheduler_plan.shutdown()

maximum number of running instances reached!

apscheduler中会配置每个job在同一时刻允许执行的max_instances,默认是1。
这个报错就是说,上一个时刻的job A 还没执行完呢,下一个定时时间又到了,说白了就是这个任务的执行时长大于任务的执行周期了,上个job A不执行完,就无法执行下一次的job。

解决方式:要么优化任务执行耗时,要么延长执行周期。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/20086.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Springboot】——项目的创建与请求参数应用

💻博主现有专栏: C51单片机(STC89C516),c语言,c,离散数学,算法设计与分析,数据结构,Python,Java基础,MySQL,linux&#xf…

EasyExcel前端怎么使用:深度解析与实用指南

EasyExcel前端怎么使用:深度解析与实用指南 在数字化时代,Excel作为数据处理和展示的重要工具,广泛应用于各行各业。而EasyExcel,作为一款基于Java的Excel处理工具,以其高效、简洁的特性赢得了众多开发者的青睐。然而…

element-plus中在表格校验输入的值

element-plus中在表格校验输入的值 效果&#xff1a; 注意事项&#xff1a;需要在表单套一个表格的字段 代码&#xff1a; <el-form :model"tableFrom" ref"tableDataRef" :rules"rules" style"margin: 0px !important;">&…

vue中大屏可视化适配所有屏幕大小

1. 外部盒子 .screenBox {width: 100vw;height: 100vh;background: url("/assets/images/bg.png") no-repeat;background-size: cover; }2.比例盒子 外层盒子css定义 .boxScale {width: 1920px;height: 1080px;background-color: orange;transform-origin: left top;…

Linux|Linux常用命令合集(一)

想记录一下个人会用到的一些linux命令&#xff0c;持续更新中… chmod\chown 之前如果文件权限不足&#xff0c;直接就是 chmod 777 filename/dirname &#xff0c;这并不是一个好习惯。 r&#xff08;读权限&#xff09;&#xff1a;值为4w&#xff08;写权限&#xff09;&a…

5.29工效学-人因工程人机交互

对于工效学这门课&#xff0c;一直都感觉很有意思&#xff0c;是一个值得再认真一点的课。可惜上课的时候效率不高&#xff0c;有感兴趣的东西课后也没有自行去拓展开来&#xff0c;前面的课我感觉还讲了比较重要的东西&#xff0c;但是&#xff0c;全忘了呢&#xff08;真的对…

Mac OS 用户开启 80 端口

开启端口 sudo vim /etc/pf.conf # 开放对应端口 pass out proto tcp from any to any port 8080 # 刷新配置文件 sudo pfctl -f /etc/pf.conf sudo pfctl -e获取本机ip地址 ifconfig en0 | grep inet | grep -v inet6 | awk {print $2}访问指定端口

C语言:深入了解(联合体和枚举)

目录 联合体 联合体的类型的声明 联合体的特点 相同成员的结构体和联合体对比 联合体大小的计算 联合体的使用举例 联合体的类型&#xff1a;判断联合体是大端还是小端 枚举类型 枚举类型声明 枚举类型的优点 枚举类型的使用 联合体 联合体的类型的声明 像结构体⼀…

焕然一新的 su

焕然一新的 su 焕然一新的 su命令格式切换到用于user执行命令command切换使用的SHELL加与不加-的区别还是有的 su [user] 和 su - [user] 焕然一新的 su su的官方定义为&#xff1a; su - run a command with substitute user and group ID 一言以蔽之&#xff0c;su - user 能…

一个浏览器插件,绕过限制,登录微信网页版!

摘要 早在2017年开始&#xff0c;微信网页版就已经住逐渐开始停止登录&#xff0c;以为了保障你的账号安全为由引导你使用电脑版微信。具体如下&#xff1a; 当然这个影响并不是所有账号&#xff0c;还是有一些账号不明觉厉地没有被影响到&#xff0c;我自己有2个号都还是可以…

tp8 实现极光推送app通知和消息

极光推送是一款功能强大的消息推送服务,可以帮助开发者将消息快速、可靠地推送给移动设备和网站用户。在本教程中,我们将介绍如何使用PHP语言来实现极光推送功能。官网地扯:极光推送-中国领先的客户互动和营销科技服务商,助力企业运营、增长和变现 一、先要去官网注册一个用…

【机器学习】集成语音与大型语音模型等安全边界探索

探索集成语音与大型语言模型&#xff08;SLMs&#xff09;的安全边界 一、引言二、SLMs的潜在安全风险三、对抗性攻击与越狱实验四、提高SLMs安全性的对策五、总结与展望 一、引言 近年来&#xff0c;随着人工智能技术的飞速发展&#xff0c;集成语音与大型语言模型&#xff08…

OceanBase 4.3.0 列存引擎解读:OLAP场景的入门券

近期&#xff0c;OceanBase 发布了4.3.0版本&#xff0c;该版本成功实现了行存与列存存储的一体化&#xff0c;并同时推出了基于列存的全新向量化引擎和代价评估模型。通过强化这些能力&#xff0c;OceanBase V4.3.0 显著提高了处理宽表的效率&#xff0c;增强了在AP&#xff0…

【计算机毕业设计】谷物识别系统Python+人工智能深度学习+TensorFlow+卷积算法网络模型+图像识别

谷物识别系统&#xff0c;本系统使用Python作为主要编程语言&#xff0c;通过TensorFlow搭建ResNet50卷积神经算法网络模型&#xff0c;通过对11种谷物图片数据集&#xff08;‘大米’, ‘小米’, ‘燕麦’, ‘玉米渣’, ‘红豆’, ‘绿豆’, ‘花生仁’, ‘荞麦’, ‘黄豆’, …

2024华为OD机试真题-全量和已占用字符集-C++(C卷D卷)

题目描述 给定两个字符集合,一个是全量字符集,一个是已占用字符集,已占用字符集中的字符不能再使用。要求输出剩余可用字符集。 输入描述 输入一个字符串 一定包含@,@前为全量字符集 @后的为已占用字符集已占用字符集中的字符一定是全量字符集中的字符字符集中的字符跟字符…

在本地电脑中如何用命令操作远程服务器上的数据库

日常做服务器维护&#xff0c;经常操作的2个事情&#xff0c;一个是备份远程服务器上的数据库到本地电脑&#xff0c;一个是将备份下来的数据库是恢复到本机做测试用。下面以阿里云的mysql为例&#xff0c;看看怎么弄。电脑是win10系统&#xff0c;先打开cmd命令行模式&#xf…

2023年亚太杯A题:果园采摘机器人的图像识别,一二题

问题一&#xff1a;基于附件1中提供的可收获苹果的图像数据集&#xff0c;提取图像特征&#xff0c;建立数学模型&#xff0c;计算每幅图像中的苹果的数量&#xff0c;并绘制附件1中所有苹果的分布直方图。 对于自动采摘机器人&#xff0c;首要的能力就是识别出苹果对象&#…

ubuntu后台运行 Python 程序

一、创建你的Python脚本 首先&#xff0c;确保你有一个Python脚本。例如&#xff0c;假设你的脚本名为 your_script.py。 二、使用 nohup 运行脚本 在终端中&#xff0c;使用 nohup 命令来运行你的脚本&#xff0c;并将其置于后台&#xff1a; nohup python your_script.py …

数字信号处理实验四:IIR数字滤波器设计及软件实现

一、实验目的 1. 掌握MATLAB中进行IIR模拟滤波器的设计的相关函数的应用&#xff1b; 2. 掌握MATLAB的工具箱中提供的常用IIR数字滤波器的设计函数的应用&#xff1b; 3.掌握MATLAB的工具箱中提供的模拟滤波器转数字滤波器的相关的设计函数的应用。 二、实验内容 本实验为…

ECMScripts6(下篇)

1、Set ES6 提供了新的数据结构 Set。它类似于数组&#xff0c;但是成员的值都是唯一的&#xff0c;没有重复的值。 Set本身是一个构造函数&#xff0c;用来生成 Set 数据结构。 const s new Set();[2, 3, 5, 4, 5, 2, 2].forEach(x > s.add(x));for (let i of s) {cons…