Как оптимизировать тг бота aiogram 3 + aiohttp + aiomysql? Что влияет на его производительность? Как кэширование с помощью redis сможет улучшить производительность? Какие в общем советы можете дать?
Bellomore, ну из того что для меня было самым полезным это кеширование изображений, чтоб не отправлять каждый раз новое, не знаю используешь ли ты их в своем боте. Понятно использовать асинхронность
modafinil, про изображения, их даже кешировать не надо, да и в целом отправлять с диска. если речь идет о использовании изображений которые присылает юзер (тоже самое относится к документам, видео и прочему), то можно по file_id отправлять их куда угодно и сколько угодно, тк они и так есть на серверах тг, то тебе не нужно будет тратить ресурсы сервера на их отправку. в целом с бд можешь попробовать оптимизировать запросы, добавить пулы соединений (мне с постгресом помогало), и опять же кеширование редис (оно в айограме прям есть)
SHURIKEN, вот я не использую редис, думаю стоит начать? насколько я помню, кэширование это же просто кратковременная запись данных, но почему я не могу использовать просто fsm?
Bellomore, я вообще редиса прикола особо не понимаю, это скорее для того чтобы координировать работу нескольких сервисов/контейнеров/ботов с одной памятью/бд, а чтобы быстро кешировать можно просто переменные использовать, но да они сбросятся после перезапуска, но редис то тоже после перезапуска забывает всё, т.к. работает в оперативной памяти
вообще поищи способы тестирования приложения, как понимаю ты столкнулся где-то с затыком/ботллнеком, скорее всего это какая то точка программы, которую можно выявить и оптимизировать в боте если он начинает тупить, но процессор не нагружен, то значит есть какая-то блокирующая тред операция, не async. а если грузит процессор и он не вывозит, значит выполняются какие-то лишние шаги или слишком затратные методы и нужна оптимизация соответственно на крайняк если ничего не получится, то значит в питоне дело, это язык который комплилирует код в машинный на лету (интерпретируемый язык), это фундаментально медленная архитектура, то есть питон медленный и это факт вообще говорят Go-lang для веб сервисов идеально подходит, он компилируемый, но памятью там занимается GC (garbage collector), также как и в питоне, то есть сильно сложнее питона он не должен быть, но тут сам не проверял если честно