从 plotly dash 中的不同回调访问 sqlite 数据库 (python)

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

我们有一个由两个 c++ 应用程序(运行 作为 exe)和 python 中的 plotly dash 仪表板组成的系统。它是一个离线系统(本地主机上的破折号 运行),使用 sqlite 数据库(在 WAL 模式下)存储数据并在不同组件之间进行交互。

每个 C++ 组件都有一个打开的数据库连接,该连接通过相应的程序传递,这工作正常。

现在我的问题是如何在 python/dash 方面处理这个问题,因为我对 dash 的理解不够(我不是 dash 程序员)。

最高效的方法可能是重用回调之间的连接。但是,正如您所注意到的,使用这种方法时,如果您使用多个 threads/processes,则必须小心。一种可能的设计是使用线程本地连接池,但对于您的用例来说可能有点矫枉过正。 opening/closing 一个 sqlite 连接的开销约为 tens of micro seconds,因此它可能不会对性能产生太大影响。但我建议您对其进行测试。

Dash 使用的 threads/processes 数量取决于 。如果设置 threaded=True,每个请求将在单独的线程中处理。使用开发服务器,可以直接传参,即

app.run_server(threaded=True)

或者,您可以通过 processes=XX > 1 来使用多个进程。