APScheduler四种组件

APScheduler四种组件

  • 触发器(triggers)
  • 任务存储(job stores)
  • 任务执行人(executors)
  • 任务调度者(schedulers)

触发器可以理解为任务什么时候执行。每个任务都有自己的触发器。除了初始配置之外,触发器完全是无状态的。

任务存储是安排任务存储在哪里。默认存储只是将任务保留在内存中,但也可以将它们存储在各种类型的数据库中(例如sqlite,mysql,redis等)。

任务执行人是处理任务的运行。他们通常是将任务提交给线程或进程池来完成此操作。任务完成后,执行程序会通知调度程序,调度程序随后会发出相应的事件。

任务调度者是将任务存储(job stores),任务执行人(executors)绑定在一起,起到管理定时任务的作用。通常只在应用程序中运行一个调度程序。应用程序开发人员通常不直接处理作业存储,执行程序或触发器,一般都是通过修改配置信息来实现。配置作业存储和执行程序是通过调度程序完成的,添加,修改和删除任务由调度者管理。

快速入门

安装

pip install apscheduler

效果案例

import threading
from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.executors.pool import ThreadPoolExecutor, ProcessPoolExecutor
from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore
"""
jobstores
存储
"""
jobstores = {
    'default': SQLAlchemyJobStore(url='sqlite:///jobs.sqlite')
}
"""
executors 
将作业中指定的可调用对象提交给线程或进程池来完成此操作
"""
executors = {
    'default': ThreadPoolExecutor(20),
    'processpool': ProcessPoolExecutor(5)
}
"""
BackgroundScheduler
希望调度程序在应用程序内部的后台运行.不会阻塞进程
"""
# 创建定时任务的调度器对象
scheduler = BackgroundScheduler(executors=executors,jobstores=jobstores)


# 定义定时任务
def my_job(param1, param2):
    print('我是定时任务 我的参数是:{}-{}'.format(param1,param2))
    print(threading.current_thread())
    return True
"""
trigger
触发任务,interval 采用是以固定的时间间隔运行作业时使用
seconds 表示间隔秒数
"""
# 向调度器中添加定时任务
scheduler.add_job(my_job,
                  'interval',
                  seconds=10,
                  args=[100, 'python'])

# 启动定时任务调度器工作
scheduler.start()
#如有必要,执行删除任务
# scheduler.remove_all_jobs()

#因为是后台运行,所以我们需要让当前程序一直运行来查看效果
while True:
   pass
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值