@YariKartoshe4ka

Как оптимизировать бота ВК?

У меня есть бот на VK API. Он умеет делать мемы из текста и фото. Его логика:
1. Загрузить фото пользователя к себе
2. Обработать его (наложить текст на него)
3. Удалить исходное фото
4. Загрузить готовое фото на сервер ВК
5. Отправить готовое фото пользователю
6. Удалить готовое фото (конец сценария)
Результаты выполнения кода:
1,2 разы - 7000-5000 ms (миллисекунд)
3,4 разы - 5000-4000 ms
Остальные от 4000 до 3500 ms

Даже от одновременного использования пятью людьми он сервер начнёт тужиться.
Как мне кажется, это довольно плохо. Какие есть варианты оптимизации?
Я думал кэшировать:
1. Проверяем есть ли готовая картинка с таким текстом.
2. Если есть, то отправляем ему.
3. Если нет, то:
1. Загрузить фото пользователя к себе
2. Обработать его (наложить текст на него)
3. Удалить исходное фото
4. Загрузить готовое фото на сервер ВК
5. Отправить готовое фото пользователю
6. Добавить готовое фото в кэш.

Но представим такую ситуацию: пользователь отправил картинку с текстом. Бот сделал мем, отправил его и добавил в кэш. Но если пользователь отправит другую картинку с ТАКИМ ЖЕ текстом, то бот отправит предыдущую картинку. Это очень плохо.
Также возможно зафлудить все свободное место на сервере (жестком диске сервера) мемами и бот станет не доступным. Какие есть варианты?
  • Вопрос задан
  • 126 просмотров
Решения вопроса 1
TTATPuOT
@TTATPuOT
https://code.patriotovsky.ru/
1) Кеширование вы можете наладить, зависит от количества повторов. Если их хотя-бы процентов 10-20, то стоит задуматься над этим. Процесс кеширования нужно упростить: сохраняете в базе ID картинки из ВК (можно ещё md5 хеш картинки сохранить), текст картинки и ID картинки готовой, после загрузки из ВК. Саму картинку удаляете с сервера. В будущем при совпадении текста и ID картинки - отправляете старую, уже отправленную картинку по её ID из ВК.
2) Подумайте на ресайзом картинок. Возможно, они долго отрабатывают из-за дикого разрешения входящего материала.
3) Узнайте на каком этапе больше всего задерживается бот. Что больше всего ест ресурсов.
4) Ну и хостинг, возможно, ваш так себе. Сейчас до сих пор некоторые провайдеры на HDD сидят, что значительно всё замедляет. Чего уж говорить о производительности ядер.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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