我想使用 Python 测试给定站点的 Web API 限制。
此 API 限制允许每个 IP 在 Y 秒内最多发出 X 个请求。
我希望能够测试此限制的可靠性,特别是在边界情况下(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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)