2

我想使用 Python 测试给定站点的 Web API 节流限制。

此 API 节流限制允许每个 IP 超过 Y 秒的 X 请求 MAX。

我希望能够测试此油门限制的可靠性,特别是在边界情况下(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 回答