понимаю как заставить aiogram работать в нескольких потоках
Зачем его заставлять работать в нескольких потоках?
loop = asyncio.get_event_loop() loop.create_task(foo()) dp.start_polling()
За лупы дёргаем x 100500
У меня есть асинхронная функция для приема сообщений из смс сервиса, вот и нужно работать с несколькими аккаунтами
А потоки тут при чём?
Для каждого пользователя нужно запускать фоновый процесс получения сообщений
почему хейтите лупы? я проблем еще не получал от них, есть варианты правильнее/лучше?
Просто ради прикола, с asyncio.run тоже такое говно случается
Потому что в актуальных версиях Python 3 появилось более высокоуровневое API для этого, поэтому тянуть loop без причины - плохая практика. asyncio.create_task в твоём случае будет более корректным решением
Ой блять как весело с сесиями
Это запустит лишь один раз функцию
Раз там асинхронная функция, можешь начать с запуска этой задачи в отдельном таске. Как я писал выше, asyncio.create_task. Но в зависимости от того, сколько будет таких задач и что ты там делаешь - это может быть не лучшее решение
Я запускаю ее через for цикл с разными аргументами, она запускается только 1 раз, loop.create_task ждёт ее завершения
Asyncio.gather(co1, co2,...)
1. Не loop.create_task, а asyncio.create_task Удали луп у себя отовсюду в коде и забудь про него, пока не будешь писать что-то комплексное или ситуация не потребует явного использования лупа 2. Чтобы не ждать завершения таски, не await её
Это сработало, спасибо
Но это не работает перед executor
async def startup(dp): # запускаем таски executor.start_polling(dp, on_startup=startup)
Обсуждают сегодня