如何在Python中测试Web API的限流限制

2 投票
1 回答
6774 浏览
提问于 2025-04-16 03:48

我想用Python来测试一个网站的API请求限制。

这个请求限制是指每个IP在Y秒内最多可以发送X次请求。

我想测试这个请求限制的可靠性,特别是在一些临界情况下,比如发送X-1次请求和X+1次请求。

你能给我推荐一个好的方法吗?

1 个回答

3

我想写一个脚本来完成以下任务:

  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)

撰写回答