我想驗證什麼是使用Python代碼端點的節流限制。 基本上我在我測試的端點上設置Throttlelimit是3calls/sec。該測試進行4次呼叫並檢查狀態代碼以獲得至少1 429響應。 驗證我有時失敗,因爲它看起來像回覆需要一秒多的時間作出迴應。我試過的代碼是: 方法一:如何發送多個請求,並確保響應在一秒鐘內回到python
request = requests.Request(method='GET', url=GLOBALS["url"], params=context.payload, headers=context.headers)
context.upperlimit = int(GLOBALS["ThrottleLimit"]) + 1
reqs = [request for i in range(0, context.upperlimit)]
with BaseThrottler(name='base-throttler', reqs_over_time=(context.upperlimit, 1)) as bt:
throttled_requests = bt.multi_submit(reqs)
context.responses = [tr.response for tr in throttled_requests]
assert(429 in [ i.status_code for i in context.responses])
方法2:
request = requests.get(url=GLOBALS["url"], params=context.payload, headers=context.headers)
url = request.url
urls = set([])
for i in range(0, context.upperlimit):
urls.add(grequests.get(url))
context.responses = grequests.map(urls)
assert(429 in [ i.status_code for i in context.responses])
有沒有一種方法,我可以確保所有的響應在同一秒回來,如果沒有它應該再試一次在測試失敗之前。