как асинхронную функцию поставить в очередь aiograma

есть функция которая выполняется не в хендлере, и надо ее добавить в асинхронный поток aiograma, просто функция выполняется 10 минут, и весь процесс стоит, я ее переписал на асинхроную но как добавить в поток ?


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

Автор решения: Anaevskiy

Вот пример:

import asyncio
import aiogram


bot = aiogram.Bot("token")
dp = aiogram.Dispatcher(bot)

async def my_func():
    while True:
        print(1)
        await asyncio.sleep(1)


async def on_startup(dp):
    asyncio.create_task(my_func())


@dp.message_handler(commands=["start"])
async def start(message: aiogram.types.Message):
    await message.answer("Hello")

if __name__ == "__main__":
    aiogram.executor.start_polling(dispatcher=dp, on_startup=on_startup)

Аргумент on_startup отвечает за запуск асинхронной функции при старте бот, а уже метод create_task библиотеки asyncio запустит вашу задачу

→ Ссылка