Flask-APScheduler介绍

Flask-APScheduler是基于APScheduler库开发的Flask拓展库。APScheduler的全称是Advanced Python Scheduler。允许您将Python代码安排为稍后执行,可以只执行一次,也可以定期执行。您可以随时添加新作业或删除旧作业。如果您将作业存储在数据库中,那么调度程序重启后它们也将存活下来并保持其状态。当调度器重新启动时,它将运行它在离线时应该运行的所有作业,APScheduler文档。

pip install flask-apscheduler

实例展示

 

使用flask配置启动定时任务

APSchedule可以使用很多方式进行启动任务,比如interval,或者cron等等,下面就分别介绍一下这两种方式启动任务。

interval间隔时间执行

我们可以通过配置如下参数来每间隔多少时间来启动任务

JOBS = [{'id': 'job1','func': 'scheduler:task','args': (1, 2),'trigger': 'interval','seconds': 10}]

其中func表示你要启动的函数,trigger表示触发方式,这里使用的interval表示间隔触发,second表示间隔的时间长短。

我们可以通过flask配置启动定时任务,例子如下

from flask import Flask
import datetime
from flask_apscheduler import APScheduleraps = APScheduler()class Config(object):JOBS = [{'id': 'job1','func': 'scheduler:task','args': (1, 2),'trigger': 'interval','seconds': 10}]SCHEDULER_API_ENABLED = Truedef task(a, b):print(str(datetime.datetime.now()) + ' execute task ' + '{}+{}={}'.format(a, b, a + b))if __name__ == '__main__':app = Flask(__name__)app.config.from_object(Config())scheduler = APScheduler()scheduler.init_app(app)scheduler.start()app.run(port=8000)

上述代码中,通过APScheduler每间隔10秒钟执行一次task函数。

cron启动任务

crontab是Linux中定时任务启动程序,我们可以通过配置crontab的配置文件来定时启动任务。在APScheduler中也可以通过cron的形式来定时启动任务。下载的例子来说明配置方式。

from flask import Flask
import datetime
from flask_apscheduler import APScheduleraps = APScheduler()class Config(object):JOBS = [{'id': 'job1','func': 'scheduler:task','args': (1, 2),'trigger': 'cron','day': '*','hour': '13','minute': '16','second': '20'}]SCHEDULER_API_ENABLED = Truedef task(a, b):print(str(datetime.datetime.now()) + ' execute task ' + '{}+{}={}'.format(a, b, a + b))if __name__ == '__main__':app = Flask(__name__)app.config.from_object(Config())scheduler = APScheduler()scheduler.init_app(app)scheduler.start()app.run(port=8000)

上述的代码表示,在每天的13:16:20秒启动task()函数。其实看配置就能理解意思,一目了然,其中*代表任意的意思。

使用装饰器定时启动任务

除了上面通过配置的方式来启动定时任务外,我们还可以使用装饰器的方式来定时启动任务。例子如下所示

from flask import Flask
from flask_apscheduler import APScheduler
import datetimeclass Config(object):SCHEDULER_API_ENABLED = Truescheduler = APScheduler()# interval examples
@scheduler.task('interval', id='do_job_1', seconds=30, misfire_grace_time=900)
def job1():print(str(datetime.datetime.now()) + ' Job 1 executed')# cron examples
@scheduler.task('cron', id='do_job_2', minute='*')
def job2():print(str(datetime.datetime.now()) + ' Job 2 executed')@scheduler.task('cron', id='do_job_3', week='*', day_of_week='sun')
def job3():print(str(datetime.datetime.now()) + ' Job 3 executed')@scheduler.task('cron', id='do_job_3', day='*', hour='13', minute='26', second='05')
def job4():print(str(datetime.datetime.now()) + ' Job 4 executed')if __name__ == '__main__':app = Flask(__name__)app.config.from_object(Config())# it is also possible to enable the API directly# scheduler.api_enabled = Truescheduler.init_app(app)scheduler.start()app.run(port=8000)

上述代码的含义如下:

  1. job1: 每间隔30s执行一次函数
  2. job2: 每分钟执行一次函数
  3. job3: 每周的星期天执行一次函数
  4. job4: 每天的13:26:05时刻执行一次函数

flask 定时任务 flask-apscheduler相关推荐

  1. python- 进阶 与flask的搭配使用---定时任务框架APScheduler学习详解

    APScheduler简介 在平常的工作中几乎有一半的功能模块都需要定时任务来推动,例如项目中有一个定时统计程序,定时爬出网站的URL程序,定时检测钓鱼网站的程序等等,都涉及到了关于定时任务的问题,第 ...

  2. Python 定时任务框架 APScheduler

    Python定时任务:多种实现方法 Python 定时任务框架 APScheduler 详解 APScheduler官方文档 Git-hub examples 例子1:apscheduler.trig ...

  3. 【Flask】flask上下文

    上下文:即语境,语意,在程序中可以理解为在代码执行到某一时刻时,根据之前代码所做的操作以及下文即将要执行的逻辑,可以决定在当前时刻下可以使用到的变量,或者可以完成的事情. Flask中有两种上下文,请 ...

  4. 【Flask】flask入门以及第一个flask项目的创建

    一.Flask介绍 Flask 本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login,数据库Flask-SQLAlchemy),都需要用第三 ...

  5. python定时任务:apscheduler的使用(还有一个celery~)

    APScheduler简介 在平常的工作中几乎有一半的功能模块都需要定时任务来推动,例如项目中有一个定时统计程序,定时爬出网站的URL程序,定时检测钓鱼网站的程序等等,都涉及到了关于定时任务的问题,第 ...

  6. Flask框架(flask中的蓝图Blueprint)

    1. 我们学习Flask框架,开始的时候是把所有的视图函数等都写在一个文件中 我们在这单个文件中可以定义路由.视图函数.定义模型等等. 但这显然存在一个问题:随着业务代码的增加,将所有代码都放在单个程 ...

  7. Flask框架(flask模板(jinja2)与字符串过滤器、列表过滤器以及自定义过滤器)

    模板变量 : {{name}} 1. 模板的定义: 模板变量 : {{name}} 2. 模板的渲染:  render_template("模板名字",键=值,键=值)       ...

  8. Flask框架(flask中的数据库SQLAlchemy(python3),配置、模型类、创建表)

    1.  SQLAlchemy是一个关系型数据库框架, 它提供了高层的ORM和底层的原生数据库的操作. flask-sqlalchemy是一个简化了SQLAlchemy操作的flask扩展. 2. 安装 ...

  9. Flask框架(flask中的请求上下文和应用上下文,以及请求钩子的使用,Flask-Script 扩展命令行)

    1.请求上下文与应用上下文 请求上下文(request context) request和session都属于请求上下文对象. 应用上下文(application context) current_a ...

最新文章

  1. IDT系列:(一)初探IDT,Interrupt Descriptor Table,中断描述符表
  2. panda.read_csv的常用参数说明
  3. 为什么PUE只说明了数据中心能效的一部分?
  4. tensorflow随笔 -tf.concat
  5. 1.1 - C#语言习惯 - 使用属性而不是可访问的数据成员
  6. VTK:BackgroundImage背景图用法实战
  7. SparkSQL愿景
  8. C++:13---多态和虚函数表
  9. Go程序:演示数组切片用法
  10. div中内部div横向布局
  11. 我发现了 Microsoft Azure 中的两个漏洞
  12. 用户自定义变量、系统变量、环境变量
  13. SPSS中介效应分析(Process和mediate插件)
  14. 下载百度地图瓦片和获取瓦片经纬度
  15. 人工神经网络图像识别,人脸识别神经网络模型
  16. 前端通信实现l聊天室
  17. 音创ktv点歌系统服务器,音创ktv点歌系统家庭版
  18. 关于跨平台 UI 的思考
  19. GDK7+NanoCode调试学习系列1--环境搭建
  20. 两种构造最小生成树的算法(普里姆算法,克鲁斯卡尔算法)

热门文章

  1. CV学习:李宏毅2021机器学习(2)
  2. 基于微信小程序的todo番茄钟设计与实现源码
  3. Cadence Orcad Capture全局修改元件属性方法及技巧图文及视频演示
  4. 矢量分析 关于∇一些矢量恒等式速记法
  5. 日本泡沫经济时期的普通百姓
  6. arduino红外遥控控制小灯
  7. PubMed插件:分区、影响因子和即时IF一目了然,还能秒下文献(亲测有效)
  8. java privatekey输出字符串_[Java教程]根据字符串(String)生成公钥(PublicKey)和私钥(PrivateKey)对象_星空网...
  9. Oulipo HDU - 1686 (kmp初见讨伐!)
  10. WinInet是什么?