Flask-flask系统运行后台轮询线程

对于有些flask系统,后台需要启动轮询线程,执行特定的任务,以下是一个简单的例子。

globals/daemon.py

python 复制代码
import threading
from app.executor.ops_service import find_and_run_ops_task_todo_in_redis


def context_run_func(app, func):
    with app.app_context():
        func(app)

def daemon_start(app):
    thread1 =threading.Thread(target=context_run_func, args=(app, find_and_run_ops_task_todo_in_redis))
    thread1.setDaemon(True)
    thread1.start()

init.py

python 复制代码
from flask import Flask
from .globals.daemon import daemon_start

flask_app = Flask(__name__)

def create_app():
    CORS(flask_app, supports_credentials=True)
    with flask_app.app_context():
        config_init(flask_app, sys_args)  # 初始化配置
        log_init(flask_app)               # 初始化日志记录
        register_blueprint(flask_app)     # 注册蓝图
        register_executor(flask_app)      # 注册异步程序执行器
        register_scheduler(flask_app)     # 注册计划任务
        daemon_start(flask_app)

run.py

python 复制代码
myapp = create_app(sys_args)

if __name__ == '__main__':
    myapp.run()

注意

  1. 不能以flask-executor启动异步执行的方式启动后台线程,会运行报错:executor需要request上下文;
  2. threading内需要传递app的上下文,否则会报错:未在app的上下文内。
相关推荐
稚辉君.MCA_P8_Java11 分钟前
DeepSeek 插入排序
linux·后端·算法·架构·排序算法
t***p93521 分钟前
idea创建SpringBoot自动创建Lombok无效果(解决)
spring boot·后端·intellij-idea
d***817227 分钟前
解决SpringBoot项目启动错误:找不到或无法加载主类
java·spring boot·后端
无限大637 分钟前
RBAC模型:像电影院选座一样管理权限,告别"一个用户配一个权限"的噩梦
后端
间彧39 分钟前
在CI/CD流水线中如何集成自动化的发布验证和熔断机制?
后端
间彧1 小时前
如何处理蓝绿部署中的数据迁移和数据库版本兼容性问题?
后端
间彧1 小时前
什么是金丝雀/灰度发布
后端
不知更鸟1 小时前
前端报错:快速解决Django接口404问题
前端·python·django
4***72131 小时前
【玩转全栈】----Django模板语法、请求与响应
数据库·python·django
间彧1 小时前
什么是蓝绿部署
后端