2016-06-13 15 views
0

とレート制限のヘッダー:「時間スライディング」ウィンドウの下https://www.instagram.com/developer/limits/Instagramの無い予測可能な値

レート制限コントロールの動作、質問です:

増加の頻度は何残りの呼び出しについては、HTTPヘッダ(x-ratelimit-remaining)秒?分、一時間?

ドキュメントを読む。 "ライブアプリのトークンごとに5000 /時間"(私たちの会社のAppは既にライブになっていた)、私は周波数リミッタを仮定しました。毎秒または毎分計算されましたが、数日後に別の戦略を試しても価値はありません。

可能な回答(これは符号化された方法によっては)であってもよい:

(周波数リミッタのようなスライディングウィンドウ)

  • はそれぞれ720ミリ秒(3600' (1時間)/ 5000 1枚のクレジットを増加させます(残りのコール))を要求することなく、5000に達するまで0になります。 1 reqを実行すれば正確な頻度で5000コールを失うべきではありません。したがって、戦略的に過ごすことができます:分散、混乱、トラフィック適応。

(各時間の充電を制限されたシンク)

  • 5000で残り、それが1時間はその第一の要求経過した後、要求ごとに1つのクレジットは、、周波数を重要では-NO崩壊:それは戻っトークンが第1の要求を行うのに使用されたため、1時間ごとに5000に更新される。

  • ...

を、リクエストごとに1枚のクレジットを減衰し、それは12:00のように、時間の固定時間で5000に行き、午後1時00、午後02時、15時私はjInstagram 1.1.7を使用しています。多くのテストの後

答えて

0

....私はいくつかの一時的な結論を持っている ...

は、5000から始めて、あなたが一定の速度(720ms/REQ)でフェッチ場合は分50でのように500に到達しますその後、Instagramは500未満の部分でクレジットを与えるようになります。したがって、60分で残りの150コールが残り、Instagramは別のクレジット部分を提供します。もちろん、もう一度下に行く...

30分のように、消費を停止する場合aprox。あなたは再び5000クレジットを取得します。

また、彼らはあなたに5000の残りの呼び出しを与えます、彼らは同じ資格証明を持つ異なったIPからの要求をするならば、彼らは他人を無視するように振る舞います。

さらに、Instagramには、HTTPリクエストごとに応答するx-ratelimit-remaining HTTPヘッダーの一貫した値を保持する多くのエラーがあります。 最後の値をレプリケートするサーバー間で、いくつかのオーバーライドとある種の競合が発生しているように見えます。

恥はあなたがInstagramの上で、私はあなたがそこに良い技術を持っていたと仮定すると、あなたのバギーの行動に私のクールなスロットリングアルゴリズムを適応に多くの時間を過ごしました!

私たちは隠してシーク、ステルストリックをプレイする代わりに、あなたと公正に遊ぶことができるようにそれらを修正してください。