python定时任务框架:APScheduler源码剖析
言 APScheduler是Python中知名的定时任务框架,可以很方面的满足定时执行或周期性执行程序任务等需求,类似于Linux上的crontab,但比crontab要更加强大,该框架不仅可以添加、删除定时任务,还提供多种持久化任务的功能。 APScheduler弱分布式的框架,因为每个任务对象都存储在当前节点中,只能通过人肉的形式实现分布式,如利用Redis来做。 第一次接触APScheduler会发它有很多概念,我当年第一次接触时就是因为概念太多,直接用crontab多舒服,但现在公司项目很多都基于APScheduler实现,所以来简单扒一扒的它的源码。 前置概念 用最简单的语言提示一下APScheduler中的关键概念。 Job: 任务对象,就是你要执行的任务 JobStores: 任务存储方式,默认是存储在内存中,还可以支持redis、mongodb等 Executor: 执行器,就是执行任务的东西 Trigger: 触发器,到达某个条件触发相应的调用逻辑 Scheduler: 调度器,将上面几个部分连接起来的东西 APScheduler提供多个Scheduler,不同Scheduler适用于不同的情景,目前我最常见的就是BackgroundScheduler后台调度器,该调度器适合要求在后台运行程序的调度。 还有多种其他调度器: BlockingScheduler