Как использовать dask.distributed API для указания параметров запуска веб-интерфейса Bokeh? - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь использовать dask.distributed Python API для запуска планировщика.Пример, приведенный в http://distributed.dask.org/en/latest/setup.html#using-the-python-api, работает должным образом, но он не дает представление о том, как предоставить опции, необходимые для запуска веб-интерфейса Bokeh.

После проверки исходного кода dask.distributed я понялМне нужно указать параметры Bokeh, используя Scheduler(services={}).К сожалению, мне не удалось найти правильный формат словаря для services={}.

Ниже приведен код для функции планировщика dask.

import dask.distributed as daskd
import tornado
import threading

def create_dask_scheduler(scheduler_options_dict):
    # Define and start tornado
    tornado_loop = tornado.ioloop.IOLoop.current()
    tornado_thread = threading.Thread(target=tornado_loop.start,daemon=True)
    tornado_thread.start()
    # Define and start scheduler
    dask_scheduler = daskd.Scheduler(loop=tornado_loop,synchronize_worker_interval=scheduler_options_dict['synchronize_worker_interval'],allowed_failures=scheduler_options_dict['allowed_failures'],services=scheduler_options_dict['services'])
    dask_scheduler.start('tcp://:8786')
    return dask_scheduler

scheduler_options_dict = collections.OrderedDict()
scheduler_options_dict = {'synchronize_worker_interval':60,'allowed_failures':3,'services':{('http://hpcsrv',8787):8787}}
dask_scheduler = create_dask_scheduler(scheduler_options_dict)

Полученная ошибка:

Исключение в потоке Thread-4: Трассировка (последний последний вызов):
/uf5a/nbobolea/bin/anaconda2019.03_python3.7/envs/optimization/lib/python3.7/site-packages / ipykernel_launcher.py: 18:
UserWarning: Не удалось запустить службу 'http‍: // hpcsrv' на порту 8787.
Получено следующее сообщение: объект 'int' не может быть вызван
distrib.scheduler -ИНФОРМАЦИЯ - Планировщик по адресу:
tcp: //xxx.xxx.xxx.xxx: 8786

Помощь и понимание очень важны.

1 Ответ

1 голос
/ 23 мая 2019

Вы хотите

'services': {('bokeh', dashboard_address): BokehScheduler, {}}

, где dashboard_address - это что-то вроде "localhost:8787", а BokehScheduler в distributed.bokeh.scheduler.Вам нужно прочитать на сервере Bokeh, чтобы увидеть, какие дополнительные kwargs могут быть переданы в этом пустом словаре.

...