@fffoig2

Как запустить фоновую функцию в боте телеграм построенную на библиотеке aoigram?

Как запустить фоновую функцию в боте телеграм построенную на библиотеке aoigram? Функция выполняет поиск новых заказов для водителей post запросом на библиотеке requests. Буду очень рад помощи
  • Вопрос задан
  • 146 просмотров
Решения вопроса 1
drygdryg
@drygdryg
Python-разработчик
Во-первых, если вы хотите выполнять фоновую задачу в том же процессе, где работает aiogram, не используйте библиотеки с блокирующим вводом/выводом (каковой является Requests), иначе ваш бот будет блокироваться (не будет реагировать на события из Telegram) во время осуществления HTTP-запроса. Лучше использовать асинхронные aiohttp либо httpx.
Если при выполнении вашей задачи больше всего времени занимает ввод-вывод (то есть она является I/O-bound), можно использовать AsyncIOScheduler из APScheduler и делать асинхронный HTTP-запрос через aiohttp либо httpx.
В противном случае, если больше всего времени занимают вычисления (то есть задача является CPU-bound), можно использовать BackgroundScheduler из того же APScheduler и делать синхронный HTTP-запрос через Requests или httpx. В качестве executor'а используйте ProcessPoolExecutor, чтобы задача выполнялась в отдельном процессе и по возможности на отдельном ядре CPU.
https://apscheduler.readthedocs.io/en/3.x/userguid...
UPD: если не требуется столь мощный функционал планирования задач, который предоставляет APScheduler, и всего лишь нужно выполнить функцию прямо сейчас, просто создавайте задачу asyncio, как упомянул выше SHADRIN.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@shadrin_ss
Junior
вам стоит разобраться в asyncio
Cоздайте loop и создайте задачу, loop.create_task(find())
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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