Совмещение 2-х асинхронных библиотек Python

пытаюсь написать скрипт, в котором должны работать 2 асинхронные библиотеки: websockets и aiogram. websockets создает соединение для wws api, a aiogram по совместительству должен быть еще и producer для него, буду благодарен за совет или указание ошибок.

import asyncio
import websockets

from aiogram import Bot, Dispatcher, executor, types


API_TOKEN = ''

bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)

#Обычный handler для приема любых сообщений
@dp.message_handler()
async def send_welcome(message: types.Message):
    await bot.send_message(message.chat.id, message.text)



#Здесь начинается websocket
#Цикл для ожидания сообщения для отправки в API
async def producer_handler(websocket):
    while True:
        message = #producer() сдесь должен быть прерывание от телеграм
        await websocket.send(message)


#Цикл для чтения сообщений от API
async def consumer_handler(websocket):
    async for message_wws in websocket:
        print(message_wws)


#Сама петля с 2мя задачами, если нет прерывания от ввода, выполняется чтение

async def consume():
    websocket_resource_url = f"wss://ws.blockchain.info/inv"
    async with websockets.connect(websocket_resource_url) as websocket:
        consumer_task = asyncio.ensure_future(consumer_handler(websocket))
        producer_task = asyncio.ensure_future(producer_handler(websocket))
        done, pending = await asyncio.wait([consumer_task, producer_task],return_when=asyncio.FIRST_COMPLETED)
        for task in pending:
            task.cancel()




#Здесь я пытаюсь запустить 2 незавершающихся петли паралельно(пробывал все из официальной документации, ставил их как задачи и все равно не понял)

async def main():
    await asyncio.gather(consume(), executor.start_polling(dp, skip_updates=True))


if __name__ == "__main__":
    asyncio.run(main())

Ошибка в основном:

RuntimeError: This event loop is already running
sys:1: RuntimeWarning: coroutine 'Executor._startup_polling' was never awaited
sys:1: RuntimeWarning: coroutine 'Executor._shutdown_polling' was never awaited

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

Автор решения: Андрій Панчій

У меня была такая же проблема, попробуйте:

# --- Ваш код ---

if __name__ == "__main__":
    dp.loop.create_task(consume())
    executor.start_polling(dp, skip_updates=True)

Только позже у меня возникла после этого уже другая ошибка: asyncio.exceptions.timeouterror

→ Ссылка