phfaster
@phfaster
Прогрессивный веб-разработчик

VK API отклоняет запросы наобум, ссылаясь на высокую частоту. Как решить?

Добрейший день. VK API чудит, как не чудил еще никто... В документации написано, что частотное ограничение - 3 запроса в секунду. Пишу на Node.JS. Создал функцию и пакет переменных для контроля частоты обращения с помощью setTimeout, count и тому подобное. Все временные метки, а именно в events: (beforeSend, response), говорят о том, что запросы совершаются ТОЧНО не чаще, чем 3 штуки в 1000 мс, а бывает и того дольше. Но ВК, начиная с 10 запроса из 30 выдает ошибку Too many requests per second (Error code: 6). Бред уже начался. Ок, решил проверить как оно работает "вручную".
Написал функцию send() внутри которой просто функция запроса с колбеком и прочим. Вызвал send 9 раз подряд (внутренние замеры показывают, что отправлялось это дело раз в 1 мс) НИ ОДНОЙ ОШИБКИ, все у VK API хорошо. Ок, я решил выяснить предел - собсна он равен 9... На 10 запросе вк начинает выдавать все ту же ошибку.

Где. Здесь. Логика?! Я уже понял, что VK API делали криворукие, по частоте возвращения ошибок (утром-днем-вечером по 3 ошибки в polling вылетает 100%) 501 502 с текстом "Internal server error: Unknown error, try later", "connect ECONNREFUSED", "Error: socket hang up". Проще говоря, за историю работы с ВК Апи, последний развлекался как мог, самыми разными способами. Но вот чтобы полностью противоречить документации при отсутствии логики в принципе как таковой - это перебор.

Кто может подсказать как быть в такой ситуации или я зря тут гневился и на самом деле я ужасно ступил?
  • Вопрос задан
  • 3572 просмотра
Решения вопроса 1
phfaster
@phfaster Автор вопроса
Прогрессивный веб-разработчик
ВК либо исправил это дело, либо не знаю что. Теперь тот же код прекрасно работает. 3 запроса всегда уходят гладко.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
jasonOk
@jasonOk
Легче болтать, чем код писать
sergiks
@sergiks Куратор тега ВКонтакте
♬♬
Вы учитываете время обработки запроса и доставки, или считаете только стартовые моменты?

Запросы имеют длину. Если ответ на какой-то из трёх вы заканчиваете принимать уже после 1000ms, то только после его окончания стоит отправлять четвёртый.

Если всё быстро и ответы приняли, вписавшись в 1000ms, надо выдержать какой-то минимальный гэп после 1000 ms перед четвёртым запросом. На всякий пожарный.
Ответ написан
angrySCV
@angrySCV
machine learning, programming, startuping
у ВК АПИ много разных лимитов, вы прочитали наиболее общий, подробнее в документации указанно, что например для 1 секунды, один лимит, лимиты для 1го часа НЕ равны суммам лимитов по секундам и тд.
тоже самое касается отдельных запросов, например на отправку сообщений (скорее всего вы его используете), там СОВСЕМ другие лимиты, хотя работает также в начале 3 запроса в секунду, но суммарно например 9 запросов в минуту (это условно, нужно смотреть на документацию) и например 30 запросов в час, 100 запросов в день.
Ответ написан
opium
@opium
Просто люблю качественно работать
юзайте прокси , там же пер айпи лимиты
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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