APScheduler库基础学习
在用的apscheduler库
pip install apscheduler==2.1.2
依赖:six,tzlocal等
最新的库
https://pypi.python.org/simple/apscheduler/
在django 的urls.py下
#定时任务 from apscheduler.scheduler import Scheduler #调用2.1.2版本的库,最新的已舍去 sched = Scheduler() @sched.interval_schedule(seconds=1) #时间调度任务,间隔1秒 def mytask(): print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) # time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) # checkUserFiles() @sched.cron_schedule(second='50', day_of_week='*', hour='13',minute='1')#d定时任务 #year:年month:月day:日week:星期day_of_week:我不知道啊hour:时minute:分second:秒 def djangotask(): print('定时任务开始') 调度开始 #sched.start(paused=True) sched.start()
APScheduler组成组件
Triggers
触发器,有自己的任务调度逻辑,每一个job单位都有触发器决定下一次何时运行。除了初始化的配置,他没有状态。
Job stores
储存调度任务,默认job对象,是储存在内存中,也可以用其他job对象把他们储存在各种数据库中;job保存到持久化仓库时,job数据要进行序列化,当加载job时也要进行反序列化。Job不能共享调度器。
Executors
是job运行的处理器,通常通过提交指定调用的job到进程或者线程池处理;当job完成后,通知发出一个适当的事件调度程序。
Schedulers
通常一个应用只有一个调度器,schdeuler开发者不直接处理jobs stores、Executors、Triggers, 相反,调度程序提供适当的接口来处理这些;配置job stores和executors通过调度器来完成,如增加,删除和修改。
APScheduler常用调度器
BlockingScheduler: 当应用程序中只有调度器时使用。
BackgroundScheduler: 不使用任何以下框架(asyncio、gevent、Tornado、Twisted、Qt),并且需要在你的应用程序后台运行调度程序
AsyncIOScheduler: 应用程序使用asyncio模块时使用
GeventScheduler: 应用程序使用gevent模块时使用
TornadoScheduler: Tornado应用程序时使用
TwistedScheduler: Twisted应用程序使用
QtScheduler: Qt应用程序时使用
APScheduler触发器
DateTrigger——日期触发器
添加此类触发器job之后,只运行一次,可以指定运行时间;若不指定则默认为当前时间。
正常使用时,使用add_job,不指定trigger类型,默认就是DateTrigger
指定trigger类型,可以使用字符串date,或者直接使用类DateTrigger的实例
IntervalTrigger——间隔触发器
此触发器,可以指定开始时间start_date,结束时间end_date,以及间隔时间,
间隔时间可以有weeks/days/hours/minutes/seconds组成,
开始时间之后,每隔多少interval执行一次任务,直至结束时间,如果不指定结束时间,则一直执行
指定此类触发器类型,可以使用字符串interval,也可以使用类IntervalTrigger的实例对象
CronTrigger——Cron触发器
类Unix系统中的Cron中,可以任意配置指定,年月日时分秒,周,每周几定时处理任务
由表达式(Expression)和字段(Field)组成,可以根据每个字段的表达式获取执行值,由调度器获取具体的执行日期
year’: ‘‘, ‘month’: 1, ‘day’: 1, ‘week’: ‘‘, ‘day_of_week’: ‘*’, ‘hour’: 0, ‘minute’: 0, ‘second’: 0
Expression | Field | Description |
---|---|---|
* | any | Fire on every value |
*/a | any | Fire every a values, starting from the minimum |
a-b | any | Fire on any value within the a-b range (a must be smaller than b) |
a-b/c | any | Fire every c values within the a-b range |
xth y | day | Fire on the x-th occurrence of weekday y within the month |
last x | day | Fire on the last occurrence of weekday x within the month |
last | day | Fire on the last day within the month |
x,y,z | any | Fire on any matching expression; can combine any number of any of the above expressions |
暂无评论,还不快来坐沙发...