Проблема асинхронных бесконечных циклов

Господа, я хотел бы узнать мнение опытных программистов, насколько правильное решение я применил. У меня есть сервер на вебсокетах, который ждет от клиентов сообщений. Реализована эта функция вот так:

async def start(self):
    while True:
        message = await self._connection.recv()
        LOGGER.info("%s: receive message %s", self.id, message)
        await self.route_message(message)

Однако, мне требовалось что бы у меня была возможность отправлять от сервера сообщения клиентам, для этого я сделал вот такую функцию с помощью такого же бесконечного цикла, который периодически проверяет состояние глобальной переменной h, которая может изменять свое состояние:

 async def remotestart():
    global h,N
    while True:
        if h==1:
            if cp.id==N:
                await cp.remote_start_transaction()
                h=0
            else:
                await asyncio.sleep(0.1)
        else:
            await asyncio.sleep(0.1)

Соответственно с помощью такой функции я собираю все в кучу.

    try:
        await asyncio.gather(cp.start(),remotestart())

Данное решение работает так как мне нужно, однако есть сомнение что это можно было решить иначе. Подскажите, адекватное ли решение ?


Ответы (0 шт):