2

Python を使用して、特定のサイトの Web API スロットル制限をテストしたいと考えています。

この API スロットル制限により、IP ごとに X リクエスト MAX が Y 秒にわたって許可されます。

特に国境の場合 (X-1 リクエスト、X+1 リクエスト) で、このスロットル制限の信頼性をテストできるようにしたいと考えています。

それを行うための良い方法を提案できますか?

4

1 に答える 1

2

次のことを行うスクリプトを作成します。

  1. Xリクエストのバーストを作成し、各リクエストのタイミングを調整します(私はを使用しますtime.time())。タイミング結果にスロットルの証拠はないはずです。レイテンシーが大きい場合は、制限に達するために並列化が必要になる場合があります。
  2. 別のリクエストを行い、時間を計ります。それは抑制されるべきであり、それはかかった時間で明らかになるはずです。

更新:HTTPリクエストのサンプルコードは次のとおりです。

import time
import urllib2

URL = 'http://twitter.com'

def request_time():
    start_time = time.time()
    urllib2.urlopen(URL).read()
    end_time = time.time()
    return end_time - start_time

def throttling_test(n):
    """Test if processing more than n requests is throttled."""
    experiment_start = time.time()
    for i in range(n):
        t = request_time()
        print 'Request #%d took %.5f ms' % (i+1, t * 1000.0)
    print '--- Throttling limit crossed ---'

    t = request_time()
    print 'Request #%d took %.5f ms' % (n+1, t * 1000.0)


throttling_test(3)
于 2010-09-07T14:44:50.160 に答える