1. 程式人生 > 程式設計 >python 解決flask uwsgi 獲取不到全域性變數的問題

python 解決flask uwsgi 獲取不到全域性變數的問題

問題

在寫flask,使用uwsgi啟動的時候,涉及到多request執行緒訪問同一個全域性變數,發現不能獲取到全域性變數的值的修改,這在flask獨立啟動的時候是沒有問題的。

虛擬碼

全域性變數

@app.route('/request1/')
  def 函式1
    修改全域性變數

@app.route('/request2/')
  def 函式2
    獲取全域性變數

嚴重懷疑是uwsgi的執行緒機制的問題,因為uwsgi是可以指定子程序的數目的,然而我設定子程序數目為1,之後,在處理函式1的時候是不能同時處理函式2的,怎麼說,有點類似於javaweb中,uwsgi為了執行緒的併發,獨立運行了多個程序,所以具有多個全域性變數?

解決辦法

想不改動原始碼直接從uwsgi上解決,搜尋很久都沒找到解決辦法

找到一個別人從坑裡爬起來的方法,就是用資料庫等執行緒安全並且可以讓多個執行緒公共訪問的區域中存放資料,這樣就能解決了。感覺資料庫要用個sqlite才是最方便的。

以上這篇python 解決flask uwsgi 獲取不到全域性變數的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。