Проблема асинхронных бесконечных циклов
Господа, я хотел бы узнать мнение опытных программистов, насколько правильное решение я применил. У меня есть сервер на вебсокетах, который ждет от клиентов сообщений. Реализована эта функция вот так:
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())
Данное решение работает так как мне нужно, однако есть сомнение что это можно было решить иначе. Подскажите, адекватное ли решение ?