flask使用定时任务flask_apscheduler(APScheduler)

Flask-APScheduler描述:

Flask-APScheduler 是一个 Flask 扩展,增加了对 APScheduler 的支持。 

APScheduler 有三个内置的调度系统可供您使用:

  • Cron 式调度(可选开始/结束时间)

  • 基于间隔的执行(以偶数间隔运行作业,可选开始/结束时间)

  • 一次性延迟执行(在设定的日期/时间运行一次作业)

1.安装 flask_apscheduler 库

pip install flask_apscheduler

2.app.py中的代码

2.1初始化APScheduler

# 创建Flask应用
app = Flask(__name__)
# 初始化APScheduler
scheduler = APScheduler()

 2.2使用方式

描述这里使用cron表达式

cron表达式生成器地址:https://cron.ciding.cc/

方式一: 硬编码方式使用

# 创建Flask应用
app = Flask(__name__)
# 初始化APScheduler
scheduler = APScheduler()# 方式一硬编码;
# 这些代码也可以放在if __name__ == '__main__':内,与调试运行方式有关,
# 1.flask服务方式运行不会走if __name__ == '__main__':内代码;
# 2.以Python文件(app.py)方式运行会走if __name__ == '__main__':内代码;
scheduler.add_job(func=MyService.my_job, id='my_job', trigger='cron', second='0/5')
scheduler.init_app(app=app)
scheduler.start()

方式二: 读取配置方式使用 

配置中代码 

class Config:JOBS = [{'id': 'job1','func': 'app:MyService.my_job',  # 注意这里的格式,app 是 Flask 应用对象的名称(app.py),: 后面是任务函数名'trigger': 'cron',# 'day_of_week': '0-6',  # 每天执行# 'hour': 18,  # 18 点执行# 'inute': 30,  # 30 分执行# 'econd': 5  # 0 秒执行'second': '0/5'}# ,# {#     'id': 'job2',#     'func': task2,  # 也可以直接使用函数名#     'trigger': 'interval',#     'econds': 30  # 每隔 30 秒执行一次# }]SCHEDULER_API_ENABLED = True
# 创建Flask应用
app = Flask(__name__)
# 初始化APScheduler
scheduler = APScheduler()# 方式一硬编码
# scheduler.add_job(func=MyService.my_job, id='my_job', trigger='cron', second='0/5')
# 方式二读取配置
app.config.from_object(Config())
scheduler.init_app(app=app)
scheduler.start()

3.my_service.py中(MyService类)代码

from datetime import datetimefrom flask import Flaskclass MyService:@classmethoddef my_job(cls):print(f"my_job,当前时间{datetime.now()}")

4.项目整体结构

5.运行效果

具体代码

https://gitee.com/jxzcode_admin/flask-project.git

参考资料

https://blog.csdn.net/m0_48770520/article/details/130735727

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1474455.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Linux系统安装软件包的方法rpm和yum详解

起因: 本篇文章是记录学习Centos7的历程 关于rpm 常见命令 1)查看已经安装的软件包 rpm -q 软件包名 2)查看文件的相关信息 rpm -qi 软件包名 3)查看软件包的依赖关系 就是说要想安装这个软件包,就必须把一些前…

【matlab】状态空间模型与传递函数模型的建立与转换

目录 SISO系统 MIMO系统 状态空间模型 状态空间模型到传递函数模型的转换 传递函数模型到状态空间模型的转换 (1) 转换函数ss() (2) 规范形转换函数canon() (3) 常微分方程(传递函数)转换为状态空间模型函数dif2ss() 状态空间模型的变换 特征值、特征向量与广义特征向量的计算…

使用自动化测试确保接口正确性的详细指南!

引言: 随着软件开发的迅速发展,接口的正确性成为了确保应用程序质量的关键要素之一。自动化测试是一种强大的工具,可以帮助开发人员和测试人员减少错误,提高测试覆盖率,并加快测试过程。本文将详细介绍从零开始如何使…

阶段三:项目开发---搭建项目前后端系统基础架构:QA:可能遇到的问题及解决方案

任务实现 常见问题1:文件监视程序的系统限制。 1、错误提示:如果在Vue项目中,使用【 npm run serve】运行kongguan_web项目时报以下错误: 2、产生原因:文件监视程序的系统产生了限制,达到了默认的上限&am…

ubuntu软件源的两种格式和环境变量

1. ubuntu的/etc是什么目录? 在Ubuntu操作系统中,/etc/是一个特殊的目录,它包含系统的配置文件。这些配置文件用于设置各种系统和应用程序的参数和选项。 一般来说,用户可以在这个目录下找到各种重要的配置文件,如网络…

AcWing 1260:二叉树输出

【题目来源】https://www.acwing.com/problem/content/1262/【题目描述】 树的凹入表示法主要用于树的屏幕或打印输出,其表示的基本思想是兄弟间等长,一个结点的长度要不小于其子结点的长度。 二叉树也可以这样表示,假设叶结点的长度为 1&…

vue项目实现堆叠卡片拖动切换效果

实际效果 实现流程 1. 实现卡片位置堆叠 将父元素的 position 设置成relative ,卡片的position 设置成 absolute 即可。 2. 消除图片的移动 如果卡片上有图片,默认拖动的时候就会导致像上图一样变成了选中图片移动,从而没法触发拖动事件。消…

vue3使用方式汇总

1、引入iconfont阿里图库图标: 1.1 进入阿里图标网站: iconfont阿里:https://www.iconfont.cn/ 1.2 添加图标: 1.3 下载代码: 1.4 在vue3中配置代码: 将其代码复制到src/assets/fonts/目录下&#xff1…

SSM中小学生信息管理系统 -计算机毕业设计源码02677

摘要 随着社会的发展和教育的进步,中小学生信息管理系统成为学校管理的重要工具。本论文旨在基于SSM框架,采用Java编程语言和MySQL数据库,设计和开发一套高效、可靠的中小学生信息管理系统。中小学生信息管理系统以学生为中心,通过…

MIT6.s081 2021 Lab Traps

使用gdb调试xv6内核 从最近两个 Lab 开始,代码逻辑的复杂度明显上升,对内核进行调试可能是帮助理解操作系统机制的绝佳方法。因此在开始本 Lab 之前,我们先来配置一下针对 xv6 内核的 gdb 调试器。 安装 gdb-multiarch. 利用包管理工具进行…

Linux基础:一. 简单的命令

文章目录 一. 简单的命令1.1 关机1.2 重启1.3 控制台打印工作目录1.4 切换当前目录1.5 列出当前目录中的目录和文件1.6 列出指定目录中的目录和文件1.7 控制台清屏1.8 查看和设置时间1.8.1 查看时间1.8.2 设置时间,需要管理员权限 一. 简单的命令 1.1 关机 comman…

【云原生】Prometheus监控Docker指标并接入Grafana

目录 一、前言 二、docker监控概述 2.1 docker常用监控指标 2.2 docker常用监控工具 三、CAdvisor概述 3.1 CAdvisor是什么 3.2 CAdvisor功能特点 3.3 CAdvisor使用场景 四、CAdvisor对接Prometheus与Grafana 4.1 环境准备 4.2 docker部署CAdvisor 4.2.2 docker部署…

Java 基础知识之 switch 语句和 yield 关键字

传统 switch 语句 传统的 switch 语句我们已经写了一万遍了,以下是一个典型的 switch 语句: int dayOfWeek 3; switch (dayOfWeek) {case 1:System.out.println("星期一");break;case 2:System.out.println("星期二");break;case…

【VUE基础】VUE3第一节—vite创建vue3工程

什么是VUE Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。无论是简单还是复杂的界面&#xff0…

MPS---MPQ86960芯片layout设计总结

MPQ86960 是一款内置功率 MOSFET 和栅极驱动的单片半桥。它可以在宽输入电压 (VIN) 范围内实现高达 50A 的连续输出电流 (IOUT),通过集成MOSFET 和驱动可优化死区时间 (DT) 并降低寄生电感,从而实现高效率。 MPQ86960 兼容三态输出控制器,另…

ctfshow-web入门-文件上传(web151-web160)

目录 1、web151 2、web152 3、web153 4、web154 5、web155 6、web156 7、web157 8、web158 9、web159 10、web160 1、web151 试了下前端只能传 png 后缀的 将一句话木马改成 png 后缀,上传后用 burpsuite 抓包 绕过前端检测后,改回 php 后缀&am…

亚信安全发布2024年6月威胁态势,高危漏洞猛增60%

近日,亚信安全正式发布《2024年6月威胁态势报告》(以下简称“报告”),报告显示,6月份新增信息安全漏洞 1794个,高危漏洞激增60%,涉及0day漏洞占67.67%;监测发现当前较活跃的勒索病毒…

【python】python客户信息审计风险决策树算法分类预测(源码+数据集+论文)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

仿写Spring IOC

文章目录 IOC思路手写代码思路一些杂七杂八(可跳过) IOC思路 手写代码思路 手写代码的思路: 自定义一个MyAnnotationConfigApplicationContext,构造器中传入要扫描的包。获取这个包下的所有类。遍历这些类,找出添加了Component注…

智慧水利的变革之路:如何通过大数据、物联网和人工智能构建高效、智能、可持续的水利管理新模式

目录 一、引言:智慧水利的时代背景与意义 二、大数据:水利管理的数据基石 (一)数据收集与整合 (二)数据分析与挖掘 三、物联网:水利管理的感知神经 (一)智能感知与监…