使用API​​启动调度程序时无法启动Dask仪表板

时间:2019-01-06 12:48:22

标签: python-3.x dask dask-distributed

我已经使用dask建立了一个分布式系统。当我使用Python API启动调度程序时,敏捷调度程序没有提到启动仪表板。正如预期的那样,我无法在我希望的地址上到达它。

由于安装了bokeh,我希望仪表板能够启动。但是,当我使用命令行启动调度程序时,仪表板会正确启动。为什么通过python API启动调度程序不会启动仪表板?

相关信息:

  • python 3.6.7
  • 任务1.0.0
  • dask-glm 0.2.0
  • dask-ml 0.11.0
  • 分布式1.25.1
  • 散景1.0.3
  • 龙卷风5.1.1(也已在4.5中试用)

输出调度程序(通过python API):

orval$ python3 myscheduler.py
distributed.scheduler - INFO - Clear task state
distributed.scheduler - INFO -   Scheduler at:    tcp://10.33.14.65:8786

代码myscheduler.py:

from distributed import Scheduler
from tornado.ioloop import IOLoop
from threading import Thread
s = Scheduler()
s.start('tcp://:8786')   # Listen on TCP port 8786
loop = IOLoop.current()
loop.start()

通过命令行启动调度程序:

distributed.scheduler - INFO - -----------------------------------------------
distributed.scheduler - INFO - Clear task state
distributed.scheduler - INFO -   Scheduler at:    tcp://10.33.14.65:8786
distributed.scheduler - INFO -       bokeh at:                     :8787
distributed.scheduler - INFO - Local Directory:    /tmp/scheduler-pg2wz3cg
distributed.scheduler - INFO - -----------------------------------------------

1 个答案:

答案 0 :(得分:1)

首先,即使在python进程中启动调度程序,您也可能希望考虑使用LocalCluster

cluster = dask.distributed.LocalCluster(processes=False, n_workers=0)

您可以通过cluster.scheduler到达调度程序,并且cluster.scheduler.services包含“散景”。

要直接实例化,您需要指定services=关键字以包含Bokeh仪表板插件。要实例化的类是distributed.bokeh.scheduler.BokehScheduler,类似

services={('bokeh', diagnostics_port): (BokehScheduler, {})}

是否要对已创建的循环和线程做一些特别的事情?在这种情况下,也许您可​​以更详细地说明要实现的目标。