TGTGInsightаналитика telegramLIVE / telegram public index
← Отфильтрованный инет
Отфильтрованный инет avatar

TGINSIGHT POST

Post #383

@filteredinternet

Отфильтрованный инет

Просмотры389Количество просмотров
Опубликован20 апр.20.04.2021, 13:28
Содержимое поста

Содержимое

Ускорил @VkontakteFeedBot еще в 10 раз. В феврале я полностью переписал бота с PHP на JavaScript и изменил архитектуру, что дало значительный прирост в скорости обхода лент, но количество пользователей снова выросло, из-за чего посты приходили с задержкой аж до 3х минут. Неприемлемо. Раньше бот работал по такой схеме: > Получаем посты юзера №1 из ВК; > Отправляем ему посты в Телеграм; > Получаем посты юзера №2 из ВК; > Отправляем ему посты в Телеграм; > ... Но по своей глупости я не заметил одну вещь — бояться бана «Too many requests» мне нужно только от Телеграма, но не от ВК, т.к. у меня есть API-ключ каждого отдельного ВК юзера. Теперь бот обходит ленты пакетами по 10 лент: > Одновременно получаем посты юзеров №1-10 из ВК; > Одновременно получаем посты юзеров №11-20 из ВК; > Одновременно получаем посты юзеров №21-30 из ВК; > ... > Рассылаем все полученные посты в Телеграмы; Такое распараллеливание дало настолько большой прирост в производительности, что теперь в среднем юзер получит новый пост с ленты уже через 20-25 секунд, а по ночам — через 5. К тому же, каждый новый пользователь бота практически никак не влияет на общую скорость обхода. Отныне скорость рассылки больше зависит от скорости интернета и количества лент в пакете, нежели от количества пользователей. Можно, конечно, попробовать асинхронно отправлять посты в телегу после каждого пакета лент и одновременно идти за следующим пакетом, не дожидаясь пока они все загрузятся, но это уже по мере прироста пользователей) UPD 23.09.2022: Проект закрыт спустя 2 года. Код открыт.