Задать вопрос
@Xymis

Как реализовать асинхронный клиент с двумя корутинами?

Здравствуйте!
Никак не получается реализовать следующую задумку:
Есть две корутины
1. Ждет сообщения от сервера и печатает ответ

async def handler(ws):
        response = await ws.recv()
        print(response)


2. Пингует сервер раз в 3 секунды

async def ping(ws):
        await asyncio.sleep(3)
        await ws.send(b'ping')


async def main():

    loop = asyncio.new_event_loop()

    async with websockets.connect('ws://127.0.0.1:8080/ws') as ws:
        await ws.send('hello'.encode())

        while True:
            await handler(ws)
            await ping(ws)

asyncio.run(main())


Проблема реализации в том, что ping берет весь контроль, и когда я отправляю сообщения handler их не обрабатывает до завершения asyncio.sleep внутри ping

Подскажите, как правильно реализовать такую логику. Заранее спасибо!
  • Вопрос задан
  • 65 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    Профессия Python-разработчик + ИИ
    10 месяцев
    Далее
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽