我有一个基于plot dash的仪表板。仪表板实时更新,并包含大量独立文件的处理。例如,仪表板中有五个不同的时间序列,它们可以单独并行更新,因为它们彼此完全独立。
我在一台windows机器上本地托管仪表板。根据dash plot论坛上的评论,实现并行处理的最佳方式似乎是使用像waitress或芹菜这样的工作线索。
利用并行处理的最佳工具是什么?
有三个选项:
-
服务员
芹菜 - 线程
;我建议使用Celery
,下面是一个小示例。
您列出的工具用于略微不同的目的,
-
Waitress
是一个WSGI服务器,也就是说,它可以用来服务Dash应用程序,或者更具体地说,是底层的Flask服务器 -
Threading
是一个在Python中构建线程程序的库 -
Celery
为分布式任务队列
也就是说,上面所有的工具都提供了一些与Dash并发处理相关的功能,
-
您可以通过配置WSGI服务器(可以是
Waitress
,尽管gunicorn
是一个更流行的选择)来启用并发执行回调 -
在回调中,您可以使用
Threading
库将计算的重要部分旋转到单独的线程中 -
你可以使用
Celery
来做(异步)繁重的工作
第一个选项将加快你的应用程序,如果你有许多独立的回调运行(因为它们将并行运行)。如果你有几个缓慢的回调(即它们的执行时间是几秒钟),一个更好的方法是异步完成繁重的工作。虽然选项2和3都支持异步处理,但Celery
提供了许多开箱即用的功能。因此,对于您的用例,Celery
将是我的首选。作为参考,这里有一个关于如何使用Celery
在Dash
中运行异步作业的小示例。