flask中的上下文 RuntimeError: No application found . Either work inside a view function or push an application context


問題是什么?

在flask中,使用多線程操作數據庫,報錯:RuntimeError: No application found . Either work inside a view function or push an application context

 

 

報錯原因:線程是獨立的,相對於flask進程是獨立的,它不知道flask初始化時候,app對象,db對象是誰,也就拿不到連接數據庫需要的config,就報錯了。

所以需要上下文。

一,什么是上下文?

現在讓你讀一本小說《平凡的世界》,前十章不讓你讀,讓你直接讀十一章,然后問你:少安和潤葉什么關系?

你是不是十臉懵逼?少安是誰,潤葉又他媽是誰? 這個時候你說不認識,解釋不了,然后拋出一個異常:RuntimeError: No application found . Either work inside a view function or push an application context

這就是上下文。

二,怎么解決上下文問題

python中用with語句來管理上下文 。具體flask中,解決上下文,就是在線程中,開始執行代碼的最上方,加入  with app.app_context():

比如:
def thread():
    from flask import app
    with app.app_context():
        do something

  

這樣就相當於把你調用多線程之前的app對象,db對象告訴了這個線程。這樣就不會報錯了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM