python中apscheduler定时模块使用

1、简述:

在我们的程序中,我们会经常用到一些定时任务,在python中也有这样的一个模块,那就是apscheduler,它主要包含了四种组件:triggers(触发器)、job stores(任务存储器)、executors(执行器)、schedulers(定时调度器)

2、apscheduler安装

第一种方式:pip install apscheduler

第二种方式:下载 python setup.py install

3、定时器种类:

BlockingScheduler:当调度器是进程中唯一运行的程序时使用

BackgroundScheduler:在不使用下面任何框架时使用,并希望调度器在应用程序的后台运行。

AsyncIOScheduler:你使用的应用程序中必须有asyncio模块

GeventScheduler:在你的应用程序中必须有gevent模块

TornadoScheduler:你的应用程序是Tornado框架可以使用

TwistedScheduler:你的应用程序是Twisted框架可以使用

QtScheduler: 在QT框架中使用

4、任务存储器:

要选择合适的任务存储,您需要确定是否需要任务持久性。如果你总是重建你的工作在你的应用程序启动的时候,然后你可以选择默认的(MemoryJobStore)。但是如果你需要你的工作来坚持调度程序重启或应用崩溃,那么你的选择通常归结为在你的编程环境中使用什么工具。如果,然而,你所处的位置自由选择,然后SQLAlcheMyJobStore在PostgreSQL后端的是推荐的选择,由于其强大的数据完整性保护。

5、执行器:

如果我们使用了上面提到的框架之一(Tornado、Twisted、Qt),通常会选择执行器。否则,默认的线程池(ThreadPoolExecutor)应大多数不够好。如果你的工作涉及到的CPU密集型操作,您应该考虑使用ProcesSpoolExecutor利用多核CPU。您甚至可以同时使用这两个,将进程池执行器添加为二级执行器。

6、触发器种类:

date:一次性任务,即只执行一次任务

interval:循环任务,即按照时间间隔执行任务

cron:定时任务,即在每个时间段执行任务

7、实例:

示例一:

指定触发器为interval:

#interval:循环任务,即按照时间间隔执行任务。
'''
参数如下:
seconds (int) – 秒
minutes (int) – 分钟
hours (int) – 小时
days (int) – 日
weeks (int) – 周
start_date (datetime|str) – 启动开始时间
end_date (datetime|str) – 最后结束时间
timezone (datetime.tzinfo|str) – 时区
'''

#!/usr/bin/env python3
# encoding:utf-8
'''
@author: lierl
@file: use_scheduler.py
@time: 2018/4/19 18:50
'''
import datetime

__author__ = 'lierl'

from apscheduler.schedulers.blocking import BlockingScheduler

def job1():
    print("job 1")

def job2(name):
    print("hello %s" %name)

schedule = BlockingScheduler()

#每秒执行一次 有参数
schedule.add_job(func=job2, args=('lierl',), trigger='interval', seconds=1)
#每秒执行一次 无参数
schedule.add_job(func=job1,trigger='interval', seconds=1)
schedule.start()#启动定时器

示例二:

执行触发器为date:

# 延时五秒后执行一次
'''
date:一次性任务,即只执行一次任务。
参数如下:
next_run_time (datetime|str) – 下一次任务执行时间
timezone (datetime.tzinfo|str) – 时区
'''
schedule.add_job(func=job2, args=('lierl',), trigger='date', next_run_time=datetime.datetime.now()+datetime.timedelta(seconds=5))

示例三:

指定触发器为cron:

'''
cron:定时任务,即在每个时间段执行任务。

参数如下:

second (int|str) –  (0-59)
minute (int|str) – 分钟 (0-59)
hour (int|str) – 小时 (0-23)
day_of_week (int|str) – 一周中的第几天 (0-6 or mon,tue,wed,thu,fri,sat,sun)
day (int|str) –  (1-31)
week (int|str) – 一年中的第几周 (1-53)
month (int|str) –  (1-12)
year (int|str) – (四位数)
start_date (datetime|str) – 最早开始时间
end_date (datetime|str) – 最晚结束时间
timezone (datetime.tzinfo|str) – 时区

'''
#1,3,5,7-9月,每天的下午2点,每一分钟执行一次任务
schedule.add_job(func=job1, trigger='cron', month='1,3,5,7-9', day='*', hour='14', minute='*')

apscheduler官网


努力成就非凡,请不要在最该奋斗的年纪选择安逸

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值