Как можно ускорить бота на AIOGRAM?

Рейтинг: 0Ответов: 1Опубликовано: 23.02.2023

У меня есть бот, который занимается продажей. Бот работает на aiogram, база данных - MySQL.

И вот в чем самая главная беда - бот работает плавно, просто летает, до момента когда не встретит нагрузку в 25 человек за раз. И я хочу понять, в чем может быть проблема таких лагов при нагрузке.

Такое на хост списать тоже нельзя, так как он достаточно мощный, и по мониторингу ест далеко не все ресурсы. Все же, я грешу на базу данных

И так, главные подозреваемые в лагах:

  1. Использование PyMySQL вместо AioMySQL

  2. Возможно, неправильно что я использую для подключения к базе класс в функцией в отдельном файле, в которой лежат методы подключения. Через данный класс работают все соединения (кроме start'a)

  3. Соединения не закрываются специально

Однако, даже и тут есть загвоздка - пользователи жаловались, что даже при вводе команды /start есть лаги. Но в функции команды есть лишь пара запросов (SELECT и INSERT), которые работают по асинхронному aiomysql, через отдельное подключению. Поэтому, возможно проблема в самой БД...

Буду очень благодарен за любой совет. Если нужна дополнительная информация - пишите в комментарии

Ответы

▲ 0
  1. Асинхронная библиотека AioMySQL работает быстрее чем PyMySQL из за того что она асинхронная. Но 25 человек это не нагрузка.
  2. Если бы вы что то неправильно использовали для подключения к бд то в большинстве случаев у вас бы ничего не работало :)
  3. Соединения с бд у бота не нужно закрывать после каждого запроса, на открытие /закрытие соединения тратится намного больше ресурсов чем на сам запрос. Хорошей практикой является поддержание соединения.

Но опять же, 25 человек это не нагрузка даже для самого слабого сервера. Попробуйте изучить код на предмет бутылочных горлышек, используйте профайлер что бы найти неоптимизированные места.