Загрузка...

How to optimize a tg bot?

Thread in Python created by Bellomore Jan 7, 2026. 239 views

  1. Bellomore
    Bellomore Topic starter Jan 7, 2026 4,273 Mar 13, 2022
    Как оптимизировать тг бота aiogram 3 + aiohttp + aiomysql? Что влияет на его производительность? Как кэширование с помощью redis сможет улучшить производительность? Какие в общем советы можете дать?
     
    1. modafinil
      avatarBellomore, ну из того что для меня было самым полезным это кеширование изображений, чтоб не отправлять каждый раз новое, не знаю используешь ли ты их в своем боте. Понятно использовать асинхронность
  2. SHURIKEN
    avatarmodafinil, про изображения, их даже кешировать не надо, да и в целом отправлять с диска. если речь идет о использовании изображений которые присылает юзер (тоже самое относится к документам, видео и прочему), то можно по file_id отправлять их куда угодно и сколько угодно, тк они и так есть на серверах тг, то тебе не нужно будет тратить ресурсы сервера на их отправку. в целом с бд можешь попробовать оптимизировать запросы, добавить пулы соединений (мне с постгресом помогало), и опять же кеширование редис (оно в айограме прям есть)
     
    1. View previous comments (1)
    2. oiiaioiiao
      avatarBellomore, я вообще редиса прикола особо не понимаю, это скорее для того чтобы координировать работу нескольких сервисов/контейнеров/ботов с одной памятью/бд, а чтобы быстро кешировать можно просто переменные использовать, но да они сбросятся после перезапуска, но редис то тоже после перезапуска забывает всё, т.к. работает в оперативной памяти
    3. xenthox
      avataroiiaioiiao, Именно из-за таких ответов и губят собесы и в целом работу
    4. oiiaioiiao
      avatarxenthox, немного не понял, типо я не шарю за редис? а в чем конкретно я чего-то не понимаю?
  3. oiiaioiiao
    вообще поищи способы тестирования приложения, как понимаю ты столкнулся где-то с затыком/ботллнеком, скорее всего это какая то точка программы, которую можно выявить и оптимизировать
    в боте если он начинает тупить, но процессор не нагружен, то значит есть какая-то блокирующая тред операция, не async. а если грузит процессор и он не вывозит, значит выполняются какие-то лишние шаги или слишком затратные методы и нужна оптимизация соответственно
    на крайняк если ничего не получится, то значит в питоне дело, это язык который комплилирует код в машинный на лету (интерпретируемый язык), это фундаментально медленная архитектура, то есть питон медленный и это факт
    вообще говорят Go-lang для веб сервисов идеально подходит, он компилируемый, но памятью там занимается GC (garbage collector), также как и в питоне, то есть сильно сложнее питона он не должен быть, но тут сам не проверял если честно
     
  4. anon2033killa
    пиши на скрэтче
     
Loading...