美文网首页
APScheduler事件监听功能

APScheduler事件监听功能

作者: 不上进的码农 | 来源:发表于2020-11-30 15:55 被阅读0次

先说一下背景
一个项目在开发过程中使用apscheduler来管理定时任务,通过redis,在偶然间遇到定时任务不执行的情况,仔细排查了一下,是在设置好的任务执行时间点并没有去执行,在远过于设置时间之后才去执行设置的任务,在这种情况下apscheduler判断当前时间已经和设置的时间相差太大而不去执行此次任务,当然在这种情况下我们可以设置misfire_grace_time(单位s)参数来决定在误差范围内继续执行这个任务,如

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

但感觉这不是解决问题的根本原因,在测试环境中也没有办法查看apscheduler的debug信息,(而且在不执行的时候Event还监听不到exception信息),在找了一些资料后发现Event.code挺好用,整理了一下,如下:

def job_listener(Event):
print(Event.dict)

{'code': 4096, 'alias': None, 'job_id': 'jsc_355_begin', 'jobstore': 'redis', 'scheduled_run_time': datetime.datetime(2020, 11, 30, 15, 43, 45, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>), 'retval': None, 'exception': None, 'traceback': None}

Event.code 以下是整理的 常量

EVENT_SCHEDULER_SHUTDOWN = 2 ** 1  //  2    调度程序已关闭
EVENT_SCHEDULER_PAUSED = 2 ** 2   //  4     调度程序中的作业处理已暂停
EVENT_SCHEDULER_RESUMED = 2 ** 3   //  8    调度程序中的作业处理已恢复
EVENT_EXECUTOR_ADDED = 2 ** 4    //   16    将执行程序添加到调度程序中
EVENT_EXECUTOR_REMOVED = 2 ** 5   //  32    遗嘱执行人被移交给调度员
EVENT_JOBSTORE_ADDED = 2 ** 6   //   64     作业存储已添加到调度程序
EVENT_JOBSTORE_REMOVED = 2 ** 7   //  128   作业存储已从调度程序中删除
EVENT_ALL_JOBS_REMOVED = 2 ** 8   //  256   所有作业已从所有作业存储库或一个特定的作业存储库中删除
EVENT_JOB_ADDED = 2 ** 9    //  512      作业已添加到作业存储中
EVENT_JOB_REMOVED = 2 ** 10  //  1024    从作业存储中删除了作业
EVENT_JOB_MODIFIED = 2 ** 11   //  2048     从计划程序外部修改了作业
EVENT_JOB_EXECUTED = 2 ** 12  // 4096    作业已成功执行
EVENT_JOB_ERROR = 2 ** 13  // 8192   作业在执行期间引发异常
EVENT_JOB_MISSED = 2 ** 14  // 16384   错过了工作执行
EVENT_JOB_SUBMITTED = 2 ** 15 // 32768    作业已提交给执行者以运行
EVENT_JOB_MAX_INSTANCES = 2 ** 16 // 65536   提交给执行者的作业未被执行者接受,因为该作业已达到其最大并发执行实例数

相关文章

  • APScheduler事件监听功能

    先说一下背景一个项目在开发过程中使用apscheduler来管理定时任务,通过redis,在偶然间遇到定时任务不执...

  • SpringBoot监听器

    介绍 类名 监听器模式 参照 SpringBoot 监听器源码写的 监听天气功能,可跳过忽略 事件对象 事件监听...

  • UGUI(三)【唐老狮】事件监听接口,事件触发器,一些重要功能实

    UGUI进阶 UI事件监听接口解决问题提供一些进阶事件监听功能常用事件接口IPointEnterHandler鼠标...

  • JS - 单页面无限加载页面

    DEMO功能: 实现听过滚动无限刷新增添新元素 监听 scroll 事件 通过监听 scroll 事件,在页面滚动...

  • 实现一个Event类

    包含的功能: 绑定事件 on(eventName, func)监听eventName事件,事件触发的时候指向fun...

  • 你所不知道的MutationObserver

    简介 MutationObserver是html5的api,功能就是用来监听dom的变动,有点类似事件监听。Mut...

  • Android之常用Listener监听器

    常用Listener监听器 ListView事件监听: EditText事件监听: RadioGroup事件监听:...

  • Eureka 服务注册与发现

    core:Java功能增强 —— 事件机制(事件与监听器) Eureka提供了服务注册与发现的功能,需要提供一个服...

  • 监听器

    第三种Servlet程序称为监听Servlet,主要功能是负责监听Web的各种操作,当相关的事件触发后将产生事件,...

  • Flask-APScheduler

    APScheduler是一款功能非常强大的定时任务框架。利用APScheduler框架我们可以很方便实现一个基于P...

网友评论

      本文标题:APScheduler事件监听功能

      本文链接:https://www.haomeiwen.com/subject/vcorwktx.html