Неправильный ip в сериализованных объектах dask.distributed.Queue (): не удалось десериализовать - PullRequest
1 голос
/ 21 марта 2019

Я использую небольшой распределенный кластер dask с помощью docker-compose (также протестированный с использованием docker swarm) и подключаюсь к нему с моего локального ноутбука.

Я пытаюсь запустить небольшой тест с использованием dask.distributed.Queue (). Они не десериализованы должным образом на рабочих, поскольку содержат ip: порт, используемый для подключения к кластеру (планировщику) с моего локального ноутбука, а не ip, доступный внутри виртуальной сети докера.

Как подключиться к кластеру или настроить кластер, чтобы объекты Queue () сериализовались с правильным адресом планировщика?

Сообщения об ошибках:

distributed.protocol.pickle - INFO - Failed to deserialize b'\x80\x04\x95\x9b\x00\x00\x00\x00\x00\x00\x00\x8c\x12distributed.queues\x94\x8c\x05Queue\x94\x93\x94)\x81\x94\x8c&queue-7f344bb49fac489e9b330c7ec5ebb736\x94\x8c\x14tcp://localhost:8786\x94\x86\x94bh\x02)\x81\x94\x8c&queue-896fde1ea60a426f98846735372b33c7\x94h\x05\x86\x94b\x86\x94.'

OSError: Timed out trying to connect to 'tcp://localhost:8786' after 10 s: in <distributed.comm.tcp.TCPConnector object at 0x7ffa5cc49588>: OSError: [Errno 99] Cannot assign requested address

Тестовый код:

import dask.distributed
import dask.bag as db

client = dask.distributed.Client('localhost:8786')

q = dask.distributed.Queue()

def foo(q1, q2):
  while True:
    d = q1.get()
    print(d)
    q2.put(d)


q1 = dask.distributed.Queue()
q2 = dask.distributed.Queue()
client.submit(foo, q1, q2)

докер-compose.yml

version: '3'
services:
  scheduler:
    hostname: scheduler
    image: daskdev/dask
    command: dask-scheduler
    ports:
      - "8786:8786"
      - "8787:8787"
    volumes:
      - /:/host
  worker-1:
    hostname: worker-1
    image: daskdev/dask
    command: dask-worker scheduler:8786
    depends_on:
      - scheduler
    volumes:
      - /:/host
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...