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



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

每个c++组件都有一个打开的数据库连接,该连接通过各自的程序传递,这工作得很好。

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

  • 我将在哪里分配数据库连接对象来传递它,或者使它从不同的回调中可用。
  • 在本地主机上的dash是否使用多线程进行回调等,其中应用程序中的单个数据库连接将是一个问题
  • 在多线程问题的情况下:它是一个有效的解决方案,在每个回调(必要时)打开数据库连接,并在离开回调之前显式地关闭它?

最高效的方法可能是重用回调之间的连接。但是,正如您注意到的,使用这种方法时,如果使用多个线程/进程,则必须小心。一种可能的设计是使用线程本地连接池,但对于您的用例来说,这可能有些多余。打开/关闭sqlite连接的开销大约是几十微秒,因此它可能不会对性能产生太大影响。但我还是建议你试一试。

Dash使用的线程/进程数取决于底层Flask服务器的配置。如果您设置了threaded=True,则每个请求将在单独的线程中处理。使用开发服务器,您可以直接传递参数,即

app.run_server(threaded=True)

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

相关内容

  • 没有找到相关文章

最新更新