Не получается в асинхронном режиме получать данные от сервера
Проблема с асинхронным получением данных от сервера. Если синхронно через функцию обращаться к серверу, то программа замирает, пока не придет какой-то ответ. При оборачивании функции в Task работает асинхронно, но не выдает ответы от сервера. Выдает только первый ответ (в примере def send_msg). Что я делаю не так?
import asyncio
import websockets
import json
import time
def channel_msg(ch_send):
msg = \
{"jsonrpc": "2.0",
"method": "public/subscribe",
"id": 42,
"params": {
"channels": ch_send
}
}
return msg
async def connect():
global websocket
websocket = await websockets.connect('wss://test.deribit.com/ws/api/v2')
async def send_msg(message):
await websocket.send(json.dumps(message))
return
async def recv():
return await websocket.recv()
async def main():
await connect()
ch_send = ["book.BTC-PERPETUAL.none.10.100ms"]
msg = channel_msg(ch_send)
await send_msg(msg)
task = asyncio.create_task(recv())
await task
while True:
print(await task) #здесь через task
# print(await recv()) #здесь через синхронную функцию
print(f"{time.strftime('%H:%M:%S', time.localtime(time.time()))}")
asyncio.run(main())