PythonでWeb APIスロットル制限をテストする方法
-
01-10-2019 - |
質問
Pythonを使用して、特定のサイトのWeb APIスロットル制限をテストしたいと思います。
このAPIスロットル制限により、XはIPごとにY秒以上最大要求を許可します。
このスロットル制限の信頼性、特に国境のケース(x-1リクエスト、x+1リクエスト)をテストできるようにしたい
良い方法を提案していただけますか?
解決
次のことをするためにスクリプトを書きます:
- Xリクエストのバーストを作成し、各リクエストをタイミングします(使用します
time.time()
)。タイミングの結果にスロットリングの証拠はないはずです。レイテンシが重要な場合は、制限を達成するために並列化する必要がある場合があります。 - 別のリクエストを行い、時間を計ります。それはスロットされるべきであり、それは時間がかかることに明白であるべきです。
更新: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)
所属していません StackOverflow