簡體   English   中英

如何使用“requests.Session”對給定 URL 的請求進行速率限制

[英]How to use `requests.Session` to rate limit requests to a given URL

我想確保對 URL 的連續請求在請求之間的給定最小延遲下受到限制。

我遇到過requests.Session掛鈎事件( https://docs.python-requests.org/en/master/user/advanced/#event-hooks )。 有沒有辦法配置這些鈎子事件(或其他方法)以有效地限制連續請求?

我的一個限制是,這種行為需要作為requests.Session的修改/參數來完成。Session object。

使用全局 state 的粗略方法。

def request_hook(r, *args, **kwargs):
    global last_request_time
    poll_latency = 0.5

    now = time.time()
    if now < poll_latency + last_request_time:
        time.sleep(min(poll_latency, poll_latency + last_request_time > now))
    last_request_time = time.time()

def get_session():
    global last_request_time

    last_request_time = time.time() - 100
    session = requests.Session()
    session.hooks['response'].append(request_hook)
    return session

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM