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

"coroutine 'listen' was never awaited" — Как исправить?

Есть сайт с финансовой информацией, которая может обновляться несколько раз в секунду.
Взаимодействие с сайтом происходит через websocket. API сайт не предоставляет.
Хочу написать программу на python, которая бы читала информацию из websocket с этого сайта.

Нашёл один ролик на ютубе, но он не помог: https://youtu.be/tgtb9iucOts.
Много раз перепроверил - ошибок нет.

import websockets
import asyncio

async def listen():
    url = "ws://simple-websocket-server-echo.glitch.me/"

    async with websockets.connect(url) as ws:
        while True:
            msg = await ws.recv()
            print(msg) 

asyncio.get_event_loop().run_until_complete
(listen())


Не понятно, почему пишем
url = "ws://simple-websocket-server-echo. glitch.me/"
.
А в ролике взаимодействие идёт с сайтом: "sync-chasing-ball.glitch.me"
И не понятно, почему надо (listen()) с новой строки писать, иначе не компилируется с ошибкой:
partially initialized module 'websockets' from 'program.py' has no attribute 'connect' (most likely due to a circular import)
  • Вопрос задан
  • 108 просмотров
Подписаться 1 Простой 6 комментариев
Решения вопроса 1
@dilmah949
Разработчик на Python, backend
import websockets
import asyncio
import logging

# Настройка логирования
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')

async def listen():
    url = "ws://simple-websocket-server-echo.glitch.me/"
    
    logging.info("Подключение к серверу WebSocket...")
    async with websockets.connect(url) as ws:
        logging.info("Успешно подключено к серверу.")
        
        while True:
            msg = await ws.recv()  # Ожидаем получение сообщения
            logging.info(f"Получено сообщение: {msg}")  # Логируем сообщение

async def main():
    # Создание задачи для прослушивания
    listener_task = asyncio.create_task(listen())
    
    # Здесь вы можете добавить другие задачи параллельно, если необходимо
    await listener_task  # Ожидаем завершения задачи, чтобы программа не завершилась

# Запуск основной функции
asyncio.run(main())
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы