Заголовок ограничения скорости Instagram без предсказуемого значения

Согласно документации: https://www.instagram.com/developer/limits/

Управление ограничением скорости работает в "скользящем по времени" окне, вопрос в следующем:

Какова частота увеличения заголовка HTTP оставшихся вызовов (x-ratelimit-remaining) секунд? минут?, час?

Чтение документов. «5000/час за токен для приложений Live» (приложение нашей компании уже запущено), я предположил, что ограничитель частоты рассчитывается каждую секунду или минуту, но после нескольких дней попыток различных стратегий значение, похоже, не имеет никакого вычитаемого поведения.

Возможные ответы (в зависимости от того, как это закодировано):

(скользящее окно наподобие ограничителя частоты)

  • он увеличивает 1 кредит каждые 720 мс (3600' (1 час) / 5000 (оставшиеся вызовы)) без запроса до достижения 5000, в противном случае он уменьшается до 0. Если мы делаем 1 требование. при правильной частоте мы никогда не должны терять 5000 вызовов., чтобы мы могли их тратить стратегически: рассредоточенно, захламленно, с учетом трафика.

(ограниченная подзарядка раковины каждый час)

  • с оставшимися 5000 он уменьшается на 1 кредит за запрос - независимо от частоты-, через 1 час, прошедший с момента этого 1-го запроса: он возвращается к 5000

  • он обновляется до 5000 каждый час, считая с тех пор, как токен использовался для выполнения 1-го запроса.

  • он теряет 1 кредит за запрос и достигает 5000 за фиксированный час, например, в 12:00, 13:00, 14:00, 15:00...

Я использую jInstagram 1.1.7.


person user1995400    schedule 13.06.2016    source источник


Ответы (1)


После долгих испытаний.... У меня есть некоторые временные выводы...

Начиная с 5000, если вы получаете с одинаковой скоростью (720 мс / запрос), вы достигнете 500, например, на 50-й минуте, тогда Instagram начнет давать вам кредит порциями меньше 500. Таким образом, на 60-й минуте у вас останется 150 оставшиеся звонки, и Instagram даст вам еще одну кредитную часть, обычно достигающую 500 ср. и конечно опять вниз...

Если вы перестанете есть, примерно через 30 минут. Вы получите снова 5000 кредитов.

Кроме того, они дают вам 5000 оставшихся вызовов, у них, похоже, есть счетчики, индексированные по IP, если вы делаете запрос с разных IP-адресов с одними и теми же учетными данными, они будут действовать как игнорирование других.

Кроме того, у Instagram есть много ошибок, связанных с сохранением постоянного значения для HTTP-заголовка x-ratelimit-remaining, на который они отвечают при каждом HTTP-запросе. Похоже, это связано с некоторым переопределением и какой-то гонкой между серверами, реплицирующими последнее значение.

Позор тебе, инстаграм, я потратил много времени, адаптируя свой крутой алгоритм дросселирования к твоему глючному поведению, предполагая, что у тебя там хорошая инженерия!

Пожалуйста, исправьте их, чтобы мы могли играть с вами честно, вместо того, чтобы играть в прятки и хитрости.

person user1995400    schedule 15.06.2016