Python定时任务APScheduler框架

1. 安装

pip install apscheduler

2. 四大组件

  • 触发器triggers: 用于设定触发任务的条件
  • 任务存贮器job store: 用于存放任务, 把任务存放在内存或数据库中
  • 执行器executors: 用于执行任务, 可以设定执行模式为单线程或线程池
  • 调度器schedules: 把上方三个组件作为参数, 通过创建调度器实例来运行

3. 调度器

  • BlockingScheduler 阻塞式调度器:适用于只跑调度器的程序。
  • BackgroundScheduler 后台调度器:适用于非阻塞的情况,调度器会在后台独立运行。
  • AsyncIOScheduler AsyncIO调度器,适用于应用使用AsnycIO的情况。
  • GeventScheduler Gevent调度器,适用于应用通过Gevent的情况。
  • TornadoScheduler Tornado调度器,适用于构建Tornado应用。
  • TwistedScheduler Twisted调度器,适用于构建Twisted应用。
  • QtScheduler Qt调度器,适用于构建Qt应用。

4. 触发器

  • date 日期:触发任务运行的具体日期
  • interval 间隔:触发任务运行的时间间隔
  • cron 周期:触发任务运行的周期
  • calendarinterval:当您想要在一天中的特定时间以日历为基础的间隔运行任务时使用 , 一个任务也可以设定多种触发器,比如,可以设定同时满足所有触发器条件而触发,或者满足一项即触发。

5. 实例

5.1 触发器date(特定时间点执行一次)

代码解读:程序一直处于阻塞状态,在2020-01-19 19:08:00 执行一次后继续阻塞

from apscheduler.schedulers.blocking import BlockingScheduler


def spider():
    print('spider name')


schedule = BlockingScheduler()
schedule.add_job(spider, 'date', run_date='2020-01-19 19:08:00')
schedule.start()
5.2 触发器interval :周期任务
参数 说明
weeks(int) 间隔几周
days(int) 间隔几天
hours(int) 间隔几小时
minutes(int) 间隔几分钟
seconds(int) 间隔多少秒
start_date(datetime or str) 开始日期
end_date(datetime or str) 结束日期
timezone(datetime.tzinfo or str) 时区

代码解读:程序一直处于阻塞状态,在start_date 和 end_date 这个时间段内每隔1s执行一次;其中start_date 和end_date 可有可无

from apscheduler.schedulers.blocking import BlockingScheduler


def spider():
    print('spider name')


schedule = BlockingScheduler()
schedule.add_job(spider, 'interval', seconds=1, start_date="2020-01-19 19:15:00", end_date="2020-01-19 19:15:20")
schedule.start()
发布了288 篇原创文章 · 获赞 50 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/gklcsdn/article/details/104044149
今日推荐