Панель инструментов Dask не запускается при запуске планировщика с API - PullRequest
0 голосов
/ 06 января 2019

Я настроил распределенную систему, используя dask. Когда я запускаю планировщик, используя Python API , планировщик dask не упоминает о запуске панели мониторинга. Как и ожидалось, я не могу связаться с ним по адресу, который я ожидаю.

Так как bokeh установлено, я ожидаю, что приборная панель будет запущена. Однако когда я запускаю планировщик с помощью командной строки, панель управления запускается правильно. Почему запуск планировщика через API Python не запускает панель управления?

Соответствующая информация:

  • питон 3.6.7
  • dask 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 голосов
/ 06 января 2019

Во-первых, даже при запуске планировщика в процессе Python вы можете рассмотреть возможность использования LocalCluster:

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

, где вы можете обратиться к планировщику как cluster.scheduler, а cluster.scheduler.services включает "bokeh".

Для создания экземпляров напрямую, как вы делаете, вам нужно указать ключевое слово services=, чтобы включить плагин панели инструментов Bokeh. Класс для создания экземпляра - distributed.bokeh.scheduler.BokehScheduler, что-то вроде

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

Вы хотели сделать что-то особенное с созданным вами циклом и потоком? Возможно, в этом случае вы можете более конкретно указать, чего вы хотите достичь.

...