如何在Python中测试Web API限制

时间:2010-09-07 10:43:45

标签: python api throttling

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

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

我希望能够测试此节流限制的可靠性,特别是在边界情况下(X-1请求,X + 1请求)

你能建议一个好方法吗?

1 个答案:

答案 0 :(得分:2)

我会编写一个脚本来执行以下操作:

  1. 发出一连串X请求,为每个请求计时(我会使用time.time())。应该没有时间结果限制的证据。如果延迟很重要,您可能需要并行化以达到限制。
  2. 提出另一个请求并计时。它应该受到限制,这应该在所花费的时间内显而易见。
  3. 更新:这是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)