簡體   English   中英

從plotly dash(python)中的不同回調訪問sqlite數據庫

[英]Access sqlite database from different callbacks in plotly dash (python)

我們有一個由兩個 C++ 應用程序(作為 exe 運行)和一個 Python 中的繪圖儀表板組成的系統。 它是一個離線系統(在本地主機上運行的dash),使用sqlite 數據庫(WAL 模式)來存儲數據並在不同組件之間進行交互。

每個 C++ 組件都有一個通過相應程序傳遞的開放數據庫連接,這工作正常。

現在我的問題是如何在 python/dash 方面處理這個問題,因為我對 dash 不夠了解(我不是 dash 程序員)。

  • 我將在哪個位置分配數據庫連接對象以傳遞它或使其可從不同的回調中使用。
  • 本地主機上的 dash 是否使用多線程進行回調等,其中應用程序中的單個數據庫連接會出現問題
  • 在多線程問題的情況下:在每個回調中(必要時)打開一個數據庫連接並在離開回調之前顯式關閉它是否是一個有效的解決方案?

最高效的方法可能是重用回調之間的連接。 但是,正如您所注意到的,如果您使用多個線程/進程,則使用這種方法必須小心。 一種可能的設計是使用線程本地連接池,但對於您的用例來說可能有點矯枉過正。 打開/關閉 sqlite 連接的開銷在幾十微秒的數量級,因此它可能不會對性能產生太大影響。 但我建議測試一下。

Dash 使用的線程/進程數量取決於底層 Flask 服務器的配置 如果您設置threaded=True ,則每個請求都將在單獨的線程中處理。 使用開發服務器,可以直接傳參數,即

app.run_server(threaded=True)

或者,您可以傳遞processes=XX > 1以使用多個進程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM