flask python 设置定时任务 flask 周期性执行任务方案

flask 通常使用 flask_apscheduler 框架设计定时任务,flask_apscheduler 功能很全面,能按设定的时间规则执行任务,可以持久化到各类数据库(mysql,redis,mongodb),实现对定时任务增、删、改、查等操作。

安装

pip3 install flask_apscheduler

1、调用方法

方法一:使用 Config 类配置时间规则

from flask import Flask
from flask_apscheduler import APSchedulerclass Config(object):# 列表类型,如有需要可以定义多个jobJOBS = [{'id': 'job_1',                # 一个标识'func': '__main__:job1',     # 指定运行的函数'args': (1, 2),              # 传入函数的参数'trigger': 'interval',       # 指定 定时任务的类型'seconds': 5                # 运行的间隔时间}]SCHEDULER_API_ENABLED = Truedef job1(a, b):                          # 运行的定时任务的函数print(str(a) + ' ' + str(b))if __name__ == '__main__':app = Flask(__name__)                 # 实例化flaskapp.config.from_object(Config())      # 为实例化的 flask 引入配置scheduler = APScheduler()                  # 实例化 APSchedulerscheduler.init_app(app)                    # 把任务列表放入 flaskscheduler.start()                          # 启动任务列表app.debug = Trueapp.run(host='0.0.0.0',port=8000)          # 启动 flask

方法二:使用装饰器

from flask import Flask
from flask_apscheduler import APScheduler# 实例化 APScheduler
scheduler = APScheduler()@scheduler.task('interval', id='job_1', args=(1,2),seconds=5)
def job1(a, b):  # 运行的定时任务的函数print(str(a) + ' ' + str(b))if __name__ == '__main__':app = Flask(__name__)  # 实例化flaskscheduler.start()  # 启动任务列表app.debug=Trueapp.run(host='0.0.0.0',port= 8000)  # 启动 flask

方法三:通过调用 flask_apscheduler 的 api (推荐)

from flask import Flask
from apscheduler.schedulers.background import BackgroundScheduler# 调度器在后台线程中运行,不会阻塞当前线程
scheduler = BackgroundScheduler()def job1(a, b):                          # 运行的定时任务的函数print(str(a) + ' ' + str(b))scheduler.add_job(func=job1, args=("1","2"),id="job_1", trigger="interval", seconds=5, replace_existing=False)
'''
func:定时任务执行的函数名称。
args:任务执行函数的位置参数,若无参数可不填
id:任务id,唯一标识,修改,删除均以任务id作为标识
trigger:触发器类型,参数可选:date、interval、cron
replace_existing:将任务持久化至数据库中时,此参数必须添加,值为True。并且id值必须有。不然当程序重新启动时,任务会被重复添加。
'''if __name__ == '__main__':app = Flask(__name__)  # 实例化flaskscheduler.start()  # 启动任务列表app.debug=Trueapp.run(host='0.0.0.0',port= 8000)  # 启动 flask

实例对象 scheduler 拥有增、删、改、查等基本用法:

新增任务:add_job()
编辑任务:modify_job()
删除任务:remove_job(id)(删除所有任务:remove_all_jobs()
查询任务:get_job(id)(查询所有任务:get_jobs()
暂停任务:pause_job(id)
恢复任务:resume_job(id)
运行任务:run_job(id)(立即运行,无视任务设置的时间规则)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker与Serverless计算的集成: Docker容器如何与Serverless计算结合。

文章目录 1. Docker容器的可移植性2. Serverless计算的自动伸缩性3. 使用Serverless与Docker容器a. 自托管Serverless平台b. 使用容器服务 4. 使用案例:图像处理服务5. 结论 🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉…

【常用页面记录】vue+elementUI实现搜索框+上拉加载列表

一、代码 <template><div class"mainBox"><div class"headbox"><el-input placeholder"请输入文件名称搜索" prefix-icon"el-icon-search" v-model"fileName" :clearable"true" change&qu…

C++特性:继承,封装,多态

继承 封装 类把⾃⼰的数据和⽅法只让可信的类或者对象操作&#xff0c;对不可信的进⾏隐藏&#xff0c;如&#xff1a;将公共的数据或⽅法使⽤public修饰&#xff0c;⽽不希望被访问的数据或⽅法采⽤private修饰 多态 即向不同对象发送同⼀消息&#xff0c;不同的对象在接收…

React编写CSS方式

1. css modules css modules并不是React特有的解决方案&#xff0c;而是所有使用了类似于 webpack配置的环境 下都可以使用的。 如果在其他项目中使用它&#xff0c;那么我们需要自己来进行配置&#xff0c;比如 配置webpack.config.js中的modules: true 等。 React的脚手架已经…

php中使用Imagick转换PDF第一页为PNG图片并且识别出二维码

前言&#xff1a;关于php中如何安转Imagick可见相关教程&#xff0c;在识别二维码用到了这个扩展&#xff1a; khanamiryan/php-qrcode-detector-decoder 需要注意的是目前该扩展已经更新到了2.0.2&#xff0c;默认使用composer安转不指定版本会安装最新版本的扩展&#xff0c;…

【Linux服务端搭建及使用】

连接服务器的软件&#xff1a;mobaxterm 设置root 账号 sudo apt-get install passwd #安装passwd 设置方法 sudo passwd #设置root密码 su root #切换到root账户设置共享文件夹 一、强制删除原有环境 1.删除python rpm -qa|grep pytho…

获取西华大学新闻网站信息(爬虫样例)

利用python的爬虫功能进行信息爬取&#xff0c;关键在于源码分析&#xff0c;代码相对简单。 1 源代码分析 访问网站&#xff0c;按下F12&#xff0c;进行元素查找分析。 2 代码实现 from requests import get from bs4 import BeautifulSoupdef getXhuNews(pageNum1):&qu…

作用域理解

概念:它是指对某一变量和方法具有访问权限的代码空间, 在JS中, 作用域是在函数中维护的。表示变量 或函数起作用的区域,指代了它们在什么样的上下文中执行,亦即上下文执行环境。 ES5的作用域只有两种:全局作用域和局部作用域 全局作用域 var a1; //全局作用域 function fn1(…

【每日一记】OSPF区域划分详讲、划分区域的优点好处

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大二在校生&#xff0c;喜欢编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;小新爱学习. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc…

各大搜索引擎的User-Agent

各大搜索引擎的User-Agent baidu&#xff1a;Mozilla/5.0 (compatible; Baiduspider/2.0; http://www.baidu.com/search/spider.html) Google&#xff1a;Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html) Sogou&#xff1a;Sogou web spider/4.0(h…

Java语法HashMap集合computeIfAbsent()方法使用

编程中经常遇到这种数据结构&#xff0c;判断一个map中是否存在这个key&#xff0c;如果存在则处理value的数据&#xff0c;如果不存在&#xff0c;则创建一个满足value要求的数据结构放到value中。以前常用的方法如下&#xff1a; import java.util.*;public class TestCompu…

Spring技术原理之Bean生命周期原理解析

Spring技术原理之Bean生命周期原理解析 Spring作为Java领域中的优秀框架&#xff0c;其核心功能之一是依赖注入和生命周期管理。其中&#xff0c;Bean的生命周期管理是Spring框架中一个重要的概念。在本篇文章中&#xff0c;我们将深入探讨Spring技术原理中的Bean生命周期原理…

家政服务行业做开发微信小程序可以实现什么功能

家政服务行业开发微信小程序可以实现多种功能&#xff0c;从而提升服务品质和效率&#xff0c;下面我们来详细介绍一些可能实现的功能。 一、展示服务信息 家政服务微信小程序可以展示各种服务信息&#xff0c;包括各类家政服务项目、价格、服务流程、服务人员信息等。用户可以…

岛屿的数量

题目描述 给你一个由 ‘1’&#xff08;陆地&#xff09;和 ‘0’&#xff08;水&#xff09;组成的的二维网格&#xff0c;请你计算网格中岛屿的数量。 岛屿总是被水包围&#xff0c;并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外&#xff0c;你可以…

uniapp-vue3 抖音小程序开发(上线项目开源)

最近公司临时接一个项目来接手别人的流量&#xff0c;项目比较小&#xff0c;时间比较赶。 需求&#xff1a;一个答题小程序&#xff0c;通过答题来实现性格测算和分析。 之前开发过支付宝小程序和微信小程序&#xff0c;这次是首次开发抖音小程序&#xff0c;老板要求只能下…

第十三章:IO流

13.1&#xff1a;File类的使用 package com.jiayifeng.java;import org.junit.Test;import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.util.Date;/*** author 爱编程的小贾* create 2023-10-10 16:13** 一&#xff1a;File类的使用…

通过后台系统添加一段div,在div中写一个<style></style>标签来修改div外面的元素的深层元素的样式

先看图 btn元素就是通过后台系统加上的元素,现在需要通过在btn里面写一个style标签来修改grid-nine里面的head元素的高度.开始想通过style来修改,但是不知道怎么去获取这个div外面的元素,想通过js方法去修改,写了script标签加了js代码,但不生效,后面问了才知道,这个项目是vue打…

MES系统安灯管理:实时可视化生产线状态

一、MES系统安灯管理的意义&#xff1a; 安灯管理是指通过使用不同颜色的灯光信号来表示生产线的状态&#xff0c;以便生产人员能够直观地了解生产线的运行情况。MES系统安灯管理的意义在于提供一个实时可视化的工具&#xff0c;使制造企业能够及时发现生产线异常和潜在问题&a…

light client轻节点简介

1. 引言 前序博客&#xff1a; Helios——a16z crypto构建的去中心化以太坊轻节点 去中心化和自我主权对于Web3的未来至关重要&#xff0c;但是这些理想并不总适用于每个项目或应用程序。在非托管钱包和bridges等工具中严格优先考虑安全性而不是便利性的用户&#xff0c;可选…