您的当前位置:首页正文

[flask]如何处理异步数据库调用问题

2024-11-29 来源:个人技术集锦

主要解决异步状态在访问数据库出现的Working outside of application context问题

一、问题分析

        在异步状态下,子进程等于脱离了flask主进程,导致无法从上下文处理器中获取数据库连接配置而导致此错误,在网上查阅后可知解决方法为使用with语句,但问题是在蓝图中并没有办法调用app_context

二、问题解决

        在进入线程前,获取flask进程中的app对象并将其作为参数传递给子进程

app = current_app._get_current_object()     #传递flask参数
backThreader = threading.Thread(target=NerSelect,args=(processid,app))
    #参数为进程名,参数列表
backThreader.daemon=True                    #开启守护进程
backThreader.start()                        #开启进程

        随后在子进程中使用with语句即可

with app.app_context():
    #数据库操作

显示全文