質問

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

このAPIスロットル制限により、XはIPごとにY秒以上最大要求を許可します。

このスロットル制限の信頼性、特に国境のケース(x-1リクエスト、x+1リクエスト)をテストできるようにしたい

良い方法を提案していただけますか?

役に立ちましたか?

解決

次のことをするためにスクリプトを書きます:

  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)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top