如何在Python中测试Web API的限流限制
我想用Python来测试一个网站的API请求限制。
这个请求限制是指每个IP在Y秒内最多可以发送X次请求。
我想测试这个请求限制的可靠性,特别是在一些临界情况下,比如发送X-1次请求和X+1次请求。
你能给我推荐一个好的方法吗?
1 个回答
3
我想写一个脚本来完成以下任务:
- 发起一组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)