博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
APScheduler基本使用
阅读量:3514 次
发布时间:2019-05-20

本文共 3346 字,大约阅读时间需要 11 分钟。

公众号:战渣渣

APScheduler库基础学习

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的实例

# 示例代码    from apscheduler.triggers.date import DateTrigger    # 使用字符串方式1    scheduler.add_job(date_tick)    # 使用字符串方式2    scheduler.add_job(date_tick, 'date')    # 使用DateTrigger指定时间运行:     date = DateTrigger(datetime.now()+dt.timedelta(seconds=120))       scheduler.add_job(date_tick, date)
  • IntervalTrigger——间隔触发器

    此触发器,可以指定开始时间start_date,结束时间end_date,以及间隔时间,

    间隔时间可以有weeks/days/hours/minutes/seconds组成,

    开始时间之后,每隔多少interval执行一次任务,直至结束时间,如果不指定结束时间,则一直执行

    指定此类触发器类型,可以使用字符串interval,也可以使用类IntervalTrigger的实例对象

# 示例代码    from apscheduler.triggers.interval import IngervalTrigger    # 使用字符串方式    scheduler.add_job(interval_tick,'interval',seconds=4,minutes=2,                     start_date=datetime.now()+dt.timedelta(seconds=120),                     end_date=datetime.now()+dt.timedelta(seconds=360))    # 使用IntervalTrigger指定时间运行    trigger = IntervalTrigger(seconds=60,                               start_date=datetime.now()+dt.timedelta(seconds=60),                              end_date=datetime.now() + dt.timedelta(seconds=120))    scheduler.add_job(date_tick, trigger)
  • CronTrigger——Cron触发器

    类Unix系统中的Cron中,可以任意配置指定,年月日时分秒,周,每周几定时处理任务

    由表达式(Expression)和字段(Field)组成,可以根据每个字段的表达式获取执行值,由调度器获取具体的执行日期

    year’: ‘’, ‘month’: 1, ‘day’: 1, ‘week’: '’, ‘day_of_week’: ‘*’, ‘hour’: 0, ‘minute’: 0, ‘second’: 0

指定具体值,或者每分钟,或者每几分钟,或者每周几等当时    year (int|str) – 4-digit year    month (int|str) – month (1-12)    day (int|str) – day of the (1-31)    week (int|str) – ISO week (1-53)    day_of_week (int|str) – number or name of weekday (0-6 or mon,tue,wed,thu,fri,sat,sun)    hour (int|str) – hour (0-23)    minute (int|str) – minute (0-59)    second (int|str) – second (0-59)    start_date (datetime|str) – earliest possible date/time to trigger on (inclusive)    end_date (datetime|str) – latest possible date/time to trigger on (inclusive)    timezone (datetime.tzinfo|str) – time zone to use for the date/time calculations (defaults to scheduler timezone)
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

转载地址:http://kbbqj.baihongyu.com/

你可能感兴趣的文章
PaddleX的C++使用
查看>>
MyBatis-Plus代码生成器
查看>>
我的第一个SpringBoot项目(一)
查看>>
回文数
查看>>
伪背包问题!
查看>>
求10000以内n的阶乘!
查看>>
static关键字
查看>>
类的继承
查看>>
final关键字
查看>>
抽象类
查看>>
java的多态现象
查看>>
java中对象的类型转换
查看>>
java基础入门 String
查看>>
Java基础入门 StringBuffer类
查看>>
Java基础入门 currentTimeMillis方法
查看>>
Java基础入门 arraycopy方法
查看>>
Java基础入门 Math类
查看>>
Java基础入门 Random类
查看>>
Java基础入门 Date类
查看>>
Java基础入门 Calendar类
查看>>