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的上下文内。
相关推荐
BoBoZz194 分钟前
ColorEdges 动态有向图的动态渲染
python·vtk·图形渲染·图形处理
彼岸花开了吗21 分钟前
构建AI智能体:六十九、Bootstrap采样在大模型评估中的应用:从置信区间到模型稳定性
人工智能·python·llm
echo的PHP开发25 分钟前
如何获取苹果手机的 XcodeOrgId
python·智能手机·苹果手机
SimonKing28 分钟前
MyBatis的隐形炸弹:selectByExampleWithBLOBs使用不当,让性能下降80%
java·后端·程序员
程序员杰哥28 分钟前
Postman设置接口关联,实现参数化
自动化测试·软件测试·python·测试工具·测试用例·接口测试·postman
踏浪无痕33 分钟前
告别 Grafana 手搓 Dashboard:基于指标分组的 Prometheus 可视化新方案
后端·架构·产品
天天摸鱼的java工程师34 分钟前
分布式 ID 生成终极方案:雪花算法优化与高可用实现
java·后端
沛沛老爹35 分钟前
2025年java总结:缝缝补补又一年?
java·开发语言·人工智能·python·guava·总结·web转型ai
掘金者阿豪36 分钟前
Jenkins 任务中的 `java.lang.InterruptedException` 异常解析与解决
后端
威风的虫37 分钟前
LlamaIndex中的文档处理核心模块
python