"Ну вот и всё! Неплохая получилась история. Интересная, весёлая, порой, немного грустная, а главное-поучительная! Она научила быть смелыми и не бояться вызовов, которые готовит нам жизнь. Помогала нам добиваться поставленных целей, несмотря ни на что. Но самое главное что у это истории счастливый конец!"
Как обычно в воспаленном мозгу инженера рождаются странные мысли об оверинженеренге!!! Нужно придумать какого менеджера сокетов, или ФАБРИКУ сокетов! Или поднимать для каждого драйвера свой докер-образ. И все это было сделано, и все это работало, но оставалось чувство что делается все не правильно. Все как обычно проще) Нужно было 2 бокала белого рислинга что бы наступило прозрение...
async def foo_srv2(dvs: list):
url = '********************'
async def create_ws(url: str, dvs: list):
async with websockets.connect(url) as ws:
await ws.send(f'{{"op": "subscribe", "args": {dvs}}}')
async for message in ws:
message = json.loads(message)
print(message)
futures = list()
for i in range(0, len(dvs), 10):
slice_dvs = dvs[i:i + 10]
futures.append(asyncio.create_task(create_ws(slice_dvs)))
await asyncio.gather(*futures, return_exceptions=True)
Все просто и все прекрасно полетело. Не гарантирую что это единственно правильный подход, но все отлично поднялось и бегает. Отмасштабировал до прослушивания 44 серверов, прилетают пакеты каждые 10 миллисекунд в среднем, количество пакетов не считал, но там не мало. Все отлично работает и не жужжит)
Всем спасибо за внимание!