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

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

安装

bash 复制代码
pip3 install flask_apscheduler

1、调用方法

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

python 复制代码
from flask import Flask
from flask_apscheduler import APScheduler

class Config(object):
    # 列表类型,如有需要可以定义多个job
    JOBS = [
        {
            'id': 'job_1',                # 一个标识
            'func': '__main__:job1',     # 指定运行的函数
            'args': (1, 2),              # 传入函数的参数
            'trigger': 'interval',       # 指定 定时任务的类型
            'seconds': 5                # 运行的间隔时间
        }
    ]

    SCHEDULER_API_ENABLED = True

def job1(a, b):                          # 运行的定时任务的函数
    print(str(a) + ' ' + str(b))


if __name__ == '__main__':
    app = Flask(__name__)                 # 实例化flask
    app.config.from_object(Config())      # 为实例化的 flask 引入配置
    scheduler = APScheduler()                  # 实例化 APScheduler
    scheduler.init_app(app)                    # 把任务列表放入 flask
    scheduler.start()                          # 启动任务列表
    app.debug = True
    app.run(host='0.0.0.0',port=8000)          # 启动 flask

方法二:使用装饰器

python 复制代码
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__)  # 实例化flask
    scheduler.start()  # 启动任务列表
    app.debug=True
    app.run(host='0.0.0.0',port= 8000)  # 启动 flask

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

python 复制代码
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__)  # 实例化flask
    scheduler.start()  # 启动任务列表
    app.debug=True
    app.run(host='0.0.0.0',port= 8000)  # 启动 flask

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

python 复制代码
新增任务:add_job()
python 复制代码
编辑任务:modify_job()
python 复制代码
删除任务:remove_job(id)(删除所有任务:remove_all_jobs())
python 复制代码
查询任务:get_job(id)(查询所有任务:get_jobs())
python 复制代码
暂停任务:pause_job(id)
python 复制代码
恢复任务:resume_job(id)
python 复制代码
运行任务:run_job(id)(立即运行,无视任务设置的时间规则)
相关推荐
好看资源平台11 分钟前
网络爬虫——综合实战项目:多平台房源信息采集与分析系统
爬虫·python
凡人的AI工具箱14 分钟前
15分钟学 Go 第 60 天 :综合项目展示 - 构建微服务电商平台(完整示例25000字)
开发语言·后端·微服务·架构·golang
java亮小白199722 分钟前
Spring循环依赖如何解决的?
java·后端·spring
进击的六角龙32 分钟前
深入浅出:使用Python调用API实现智能天气预报
开发语言·python
檀越剑指大厂32 分钟前
【Python系列】浅析 Python 中的字典更新与应用场景
开发语言·python
2301_8112743139 分钟前
大数据基于Spring Boot的化妆品推荐系统的设计与实现
大数据·spring boot·后端
湫ccc40 分钟前
Python简介以及解释器安装(保姆级教学)
开发语言·python
孤独且没人爱的纸鹤43 分钟前
【深度学习】:从人工神经网络的基础原理到循环神经网络的先进技术,跨越智能算法的关键发展阶段及其未来趋势,探索技术进步与应用挑战
人工智能·python·深度学习·机器学习·ai
羊小猪~~1 小时前
tensorflow案例7--数据增强与测试集, 训练集, 验证集的构建
人工智能·python·深度学习·机器学习·cnn·tensorflow·neo4j
lzhlizihang1 小时前
python如何使用spark操作hive
hive·python·spark