Python3实现定时任务的一种工具:APScheduler

Python3实现定时任务的一种工具:APScheduler

项目开发过程中难免会遇到需要定时触发任务的需求,而我们又不可能人工定时触发这些任务。可行的定时任务实现方法有很多,如:Celery、crontab、APScheduler、手写脚本等。

Celery功能固然强大,但是单纯为了实现定时任务而调用Celery未免太过浪费,并且celery不支持动态管理定时任务。今天介绍一个强大又不失简洁的定时任务工具:APScheduler。

Ubuntu环境 安装方法

pip install apscheduler

使用方法举例:

import time
from apscheduler.schedulers.blocking import BlockingScheduler


def job_func():
     print('Current time: ', time.ctime())

scheduler = BlockingScheduler()

# 每小时触发一次job_func;
scheduler.add_job(job_func, 'date', run_date='2019-08-11 16:00:20')

# 每隔1分钟执行一次 job_func;
scheduler .add_job(job_func, 'interval', minutes=1)

# 带有起止时间的interval;
scheduler.add_job(job_func, 'interval', minutes=0.1, start_date='2019-08-11 16:02:20', end_date='2019-08-11 16:02:40')

# 截止到2019年12月31日前,每个周一到周四,每分钟的0秒时刻,执行一次job_func;
scheduler.add_job(job_func, 'cron', day_of_week='0-4', hour='8-16', minute='0-59', second='0', end_date='2019-12-31')

scheduler.start()

APScheduler分为以下几个模块:触发器、任务存储器、执行器、调度器

APScheduler的触发器分为三种类型:date(日期触发),interval(固定间隔触发),cron(周期触发)。日期触发不用多说,周期触发相比于固定间隔触发,区别在于:周期触发可以理解成特定时期内的固定间隔触发,换句话说,我们可以为不同时间段设置不同的触发间隔。

APScheduler的任务存储器是比较强大的,因为我们可以根据需求,采用不同的任务存储位置。针对 比较简单的、不需要保持状态的任务,可以采用MemoryJobStore作为存储方式(MemoryJobStore也是默认存储方式);而对于实现了状态保持的任务,则需要选用相应的数据库来实现任务存储,比如常用的SQLAlchemyJobStore

APScheduler的执行器也有多种类型可选,比如针对I/O密集型任务,可以选用ThreadPoolExecutor;而对于计算密集型任务,则可选用ProcessPoolExecutor,从而充分利用多核资源。

本文参考自:http://www.chenxm.cc/article/829.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值