https://apscheduler.readthedocs.io/en/latest/userguide.html

简单的使用方式为:

from apscheduler.schedulers.blocking import BlockingScheduler

sched = BlockingScheduler()

sched.add_job(ff_task,'cron',hour='0-1,8-23',minute=28)
sched.add_job(avor_task, 'cron', hour='2-7', minute='0')
sched.add_job(vor_task,'cron',hour='0-1,8-23',minute='*/3')
try:
    sched.start()
except (KeyboardInterrupt, SystemExit):
    sched.shutdown()

apscheduler包含四个组件 :triggers触发器 , schedulers 调度器 ,job stores任务存储 , executors执行器

triggers 包含计划的逻辑,每个任务都有自己的触发器,来决定任务下次被触发的时间,除了类型的初始配置,触发器是完全无状态的

job stores 用户存储被计划的任务,默认存储在内存中,也可存储在各种数据库中。当一个任务被存储在持久化的存储库中时将被序列化,然后在加载到内存时被反序列化。

调度器之间不应该共用任务存储。

executors 用于处理任务的执行。 让预定的任务在线程或进程池中启动,当任务结束后,执行器通知调度器什么时候进行合适的事件。

scheduler用于将所有的组建凝结起来。一个应用中通常只有一个调度器

BlockingScheduler:用于当scheduler是进程里唯一运行的程序

BlockgroundScheduler:当你没有使用以下任何一个调度器,并且希望scheduler在应用的后台运行时适用

AsyncIOScheduler :当应用中使用 asyncio module(异步io模块)时适用

GeventScheduler :当应用中使用 gevent时适用

TornadoScheduler :当构建基于Tornado的应用时适用

TwistedScheduler: 当构建基于 TwistedScheduler的应用时适用

QtScheduler: 当构建 Qt 应用时适用

存储器选择

如果每次开启应用时都会重建任务计划,则可以使用默认的内存存储

如果你希望当scheduler重启或应用宕机时,任务可以继续的按计划执行 ,存储器的选择通常取决于开发环境中使用的工具。

如果你没什么要求则推荐使用SQLAlchemyJobStore,以PostgreSQL作为存储后端

执行器

通常取决于上述组建的选择,不过,通常默认的执行器 ThreadPoolExecutor也足够大多数任务了。如果任务中设计了cpu密集型操作,应该考虑ProcessPoolExecutor ,来使用多核CPU。

你甚至可以同时使用这两个执行器,将进程池执行器添加为备选执行器

触发器

trigger决定任务执行时间的逻辑。ASPcheduler内置三种触发器:

date : 一次性的固定时间点执行任务

interval: 按周期循环执行任务

cron: 语法类似linux的定时任务cron

要组合多种triggers,也可实现 ,combining triggers ,见 https://apscheduler.readthedocs.io/en/latest/modules/triggers/combining.html#module-apscheduler.triggers.combining

ASPchedulre提供多种配置方式 ,可以通过一个配置的dict或者作为可选关键字参数传入。或者也可先实例化scheduler,添加任务,然后再配置scheduler,这种方式取得最大的灵活性。

完整的而配置说明见 https://apscheduler.readthedocs.io/en/latest/modules/schedulers/base.html#apscheduler.schedulers.base.BaseScheduler

例如,选用BackgroundScheduler ,使用默认的job store 和默认的executor:

from apscheduler.schedulers.background import BackgroundScheduler

scheduler=BackgroundScheduler()

这将会用名为”default"的MemoryJobStore ,名为“default"的ThreadPoolExecutor,默认线程池最大量为10的配置创建一个 BackgroundScheduler 。

例1

from pytz import utc

from apscheduler.schedulers.background import BackgroundScheduler

from apscheduler.jobstores.mongodb import MongoDBJobStore

from apscheduler.executors.pool import ThreadPoolExecutor,ProcessPoolExecutor

jobstores={

'mongo':MongoDBJobStore(),

'default':SQLAlchemyJobStore(url='sqlite://jobs.sqlite')

}

executors={

'default':ThreadPoolExecutor(20),

'processpool':ProcessPoolExector(5)

}

job_defaults={

'coalesce':False,

'max_instances';3

}

scheduler=BackgroundScheduler(jonstores=jobstores,executors=executors,job_defaults,timezone=utc)

例2

from apsshceduler.schedulers.background import BackgroundScheduler

scheduler=BackgroundScheduler({

'apscheduler.jonstores.mongo':{

  'type':'mongodb'

  },

'apscheduler.jobstores.default':{

  'type':'sqlalchemy',

  'url':'sqlite:///jobs.sqlite'

  },

'apscheduler.executors.default':{

  'class':'apscheduler.executors.pool:ThreadExecutor',

  'max_workers':'20'

  },

'apscheduler.executors.processpool':{

  'type':'processpool',

  'max_workers':'5'

  },

'apscheduler.job_defaults.coalesce':'false',

'apscheduler.job_defaults.max_instances':'3',

'apscheduler.timezone':'UTC',

  }

)

例3

from pytz import utc

from apscheduler.schedulers.background import BackgroundScheduler

from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore

from apscheduler.executors.pool import ProcessPoolExecutor

jobstores={

'mongo':{'type':'mongodb'},

'default':SQLAlchemyJobStore(url='sqlite://jobs.sqlite')

}

executors={

'default':{'type':'threadpool','max_workers':20},

'processpool':ProcessPoolExecutor(max_workers=5)

}

job_defaults={

'coalesce':False,

'max_instances':3

}

scheduler=BackgroundScheduler()

scheduler,configure(jobstores=jobstores,executors=executors,job_defaults=job_defaults,timezone=utc)

apscheduler -定时任务的更多相关文章

  1. APScheduler定时任务

    python模块(APScheduler定时任务)   APScheduler简介 在平常的工作中几乎有一半的功能模块都需要定时任务来推动,例如项目中有一个定时统计程序,定时爬出网站的URL程序,定时 ...

  2. apscheduler(定时任务) 基于redis持久化配置操作

    apscheduler(定时任务) 基于redis持久化配置操作 安装模块 pip install apscheduler 导入模块配置 ## 配置redis模块 from apscheduler.j ...

  3. Tornado集成Apscheduler定时任务

    熟悉Python的人可能都知道,Apscheduler是python里面一款非常优秀的任务调度框架,这个框架是从鼎鼎大名的Quartz移植而来. 之前有用过Flask版本的Apscheduler做定时 ...

  4. Flask+APScheduler定时任务

    1.安装依赖 pip install flask_apscheduler 2.使用定时任务 ```python from flask import Flask from flask_apschedul ...

  5. APScheduler定时任务框架

    1.简介 APScheduler是一个Python**定时任务框架**,提供了**基于日期**.**固定时间间隔**以及**crontab**类型的任务,并且可以**持久化任务**.基于这些功能,我们 ...

  6. APScheduler——定时任务框架

    https://www.cnblogs.com/luxiaojun/p/6567132.html

  7. uWSGI+APScheduler不能执行定时任务

    在本地项目中使用APScheduler运行定时任务ok,但是在服务器上用uwsgi部署的Django环境下,APScheduler定时任务并不会被启动. 原因:uwsgi 默认one thread o ...

  8. python定时任务APScheduler

    APScheduler定时任务 APScheduler 支持三种调度任务:固定时间间隔,固定时间点(日期),Linux 下的 Crontab 命令.同时,它还支持异步执行.后台执行调度任务. 一.基本 ...

  9. 日夕如是寒暑不间,基于Python3+Tornado6+APScheduler/Celery打造并发异步动态定时任务轮询服务

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_220 定时任务的典型落地场景在各行业中都很普遍,比如支付系统中,支付过程中因为网络或者其他因素导致出现掉单.卡单的情况,账单变成了 ...

随机推荐

  1. ACM-ICPC 2018 焦作赛区网络预赛G Give Candies(隔板定理 + 小费马定理 + 大数取模,组合数求和)题解

    题意:给你n个东西,叫你把n分成任意段,这样的分法有几种(例如3:1 1 1,1 2,2 1,3 :所以3共有4种),n最多有1e5位,答案取模p = 1e9+7 思路:就是往n个东西中间插任意个板子 ...

  2. C# “试图访问已释放的资源”

    WinCE项目 VS2008 项目现有一个公共静态类PublicItems,一个窗体模板FormModel,三个继承自模板的子窗体. 现在想要实现在其中一个子窗体中对所有子窗体上一个Label显示进行 ...

  3. TCGA系列--LncMAP

    LncMAP:http://www.bio-bigdata.com/LncMAP/index.jsp

  4. 【Django】【五】开发Web接口

    [HTTP协议与JSON] 1. HTTP协议 特点如下: (1)支持客户/服务器模式. 简单快速:客户向服务器请求服务时,只需传送请求方法和路径.请求方法常用的有GET.POST.每种方法规定了客户 ...

  5. shell 基本操作小结

    1.echo和if else fi命令 #!/bin/bash echo hello;echo there filename=demo.sh if [ -e "$filename" ...

  6. Goroutines和Channels(五)

    Channels也可以用于将多个goroutine连接在一起,一个Channel的输出作为下一个Channel的输入.这种串联的Channels就是所谓的管道(pipeline).下面的程序用两个ch ...

  7. VS 修改模板文件,增加默认注释

    其实这篇文章是从网上转载的,但是找不到转载链接,只能自己复制过来了 vs中的///文档注释类似java中/** */文档注释.能自动的生成帮助文档. 如果我想在每次创建文件时,自动生成文档注释(注意是 ...

  8. Tensorflow的基本概念与常用函数

    Tensorflow一些常用基本概念与函数(一) 1.tensorflow的基本运作 为了快速的熟悉TensorFlow编程,下面从一段简单的代码开始: import tensorflow as tf ...

  9. Java 常用对象-System类

    2017-11-02 21:41:06 System类:System 类包含一些有用的类字段和方法.它不能被实例化. *常用方法 public static void gc() 运行垃圾回收器. 调用 ...

  10. 20170728xlVBA改转置一例

    Sub 导出() Dim Sht As Worksheet, ShtName As String Dim NextRow As Long, NextRow2 As Long Dim iRow As L ...