flask 定时任务 flask-apscheduler
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)
上述代码的含义如下:
- job1: 每间隔30s执行一次函数
- job2: 每分钟执行一次函数
- job3: 每周的星期天执行一次函数
- job4: 每天的13:26:05时刻执行一次函数
flask 定时任务 flask-apscheduler相关推荐
- python- 进阶 与flask的搭配使用---定时任务框架APScheduler学习详解
APScheduler简介 在平常的工作中几乎有一半的功能模块都需要定时任务来推动,例如项目中有一个定时统计程序,定时爬出网站的URL程序,定时检测钓鱼网站的程序等等,都涉及到了关于定时任务的问题,第 ...
- Python 定时任务框架 APScheduler
Python定时任务:多种实现方法 Python 定时任务框架 APScheduler 详解 APScheduler官方文档 Git-hub examples 例子1:apscheduler.trig ...
- 【Flask】flask上下文
上下文:即语境,语意,在程序中可以理解为在代码执行到某一时刻时,根据之前代码所做的操作以及下文即将要执行的逻辑,可以决定在当前时刻下可以使用到的变量,或者可以完成的事情. Flask中有两种上下文,请 ...
- 【Flask】flask入门以及第一个flask项目的创建
一.Flask介绍 Flask 本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login,数据库Flask-SQLAlchemy),都需要用第三 ...
- python定时任务:apscheduler的使用(还有一个celery~)
APScheduler简介 在平常的工作中几乎有一半的功能模块都需要定时任务来推动,例如项目中有一个定时统计程序,定时爬出网站的URL程序,定时检测钓鱼网站的程序等等,都涉及到了关于定时任务的问题,第 ...
- Flask框架(flask中的蓝图Blueprint)
1. 我们学习Flask框架,开始的时候是把所有的视图函数等都写在一个文件中 我们在这单个文件中可以定义路由.视图函数.定义模型等等. 但这显然存在一个问题:随着业务代码的增加,将所有代码都放在单个程 ...
- Flask框架(flask模板(jinja2)与字符串过滤器、列表过滤器以及自定义过滤器)
模板变量 : {{name}} 1. 模板的定义: 模板变量 : {{name}} 2. 模板的渲染: render_template("模板名字",键=值,键=值) ...
- Flask框架(flask中的数据库SQLAlchemy(python3),配置、模型类、创建表)
1. SQLAlchemy是一个关系型数据库框架, 它提供了高层的ORM和底层的原生数据库的操作. flask-sqlalchemy是一个简化了SQLAlchemy操作的flask扩展. 2. 安装 ...
- Flask框架(flask中的请求上下文和应用上下文,以及请求钩子的使用,Flask-Script 扩展命令行)
1.请求上下文与应用上下文 请求上下文(request context) request和session都属于请求上下文对象. 应用上下文(application context) current_a ...
最新文章
- IDT系列:(一)初探IDT,Interrupt Descriptor Table,中断描述符表
- panda.read_csv的常用参数说明
- 为什么PUE只说明了数据中心能效的一部分?
- tensorflow随笔 -tf.concat
- 1.1 - C#语言习惯 - 使用属性而不是可访问的数据成员
- VTK:BackgroundImage背景图用法实战
- SparkSQL愿景
- C++:13---多态和虚函数表
- Go程序:演示数组切片用法
- div中内部div横向布局
- 我发现了 Microsoft Azure 中的两个漏洞
- 用户自定义变量、系统变量、环境变量
- SPSS中介效应分析(Process和mediate插件)
- 下载百度地图瓦片和获取瓦片经纬度
- 人工神经网络图像识别,人脸识别神经网络模型
- 前端通信实现l聊天室
- 音创ktv点歌系统服务器,音创ktv点歌系统家庭版
- 关于跨平台 UI 的思考
- GDK7+NanoCode调试学习系列1--环境搭建
- 两种构造最小生成树的算法(普里姆算法,克鲁斯卡尔算法)
热门文章
- CV学习:李宏毅2021机器学习(2)
- 基于微信小程序的todo番茄钟设计与实现源码
- Cadence Orcad Capture全局修改元件属性方法及技巧图文及视频演示
- 矢量分析 关于∇一些矢量恒等式速记法
- 日本泡沫经济时期的普通百姓
- arduino红外遥控控制小灯
- PubMed插件:分区、影响因子和即时IF一目了然,还能秒下文献(亲测有效)
- java privatekey输出字符串_[Java教程]根据字符串(String)生成公钥(PublicKey)和私钥(PrivateKey)对象_星空网...
- Oulipo HDU - 1686 (kmp初见讨伐!)
- WinInet是什么?