确定请求的速率限制

Posted

技术标签:

【中文标题】确定请求的速率限制【英文标题】:Determine the rate limit for requests 【发布时间】:2018-11-05 14:45:28 【问题描述】:

我有一个关于速率限制的问题。 我从 CSV 中获取数据并将其输入到查询中,输出存储在列表中。 我收到一个错误,因为我一次发出了太多请求。 (我每秒只能发出 20 个请求)。如何确定速率限制?

import requests
import pandas as pd 

df = pd.read_csv("Data_1000.csv")
list = []



def requestSummonerData(summonerName, APIKey):

    URL = "https://euw1.api.riotgames.com/lol/summoner/v3/summoners/by-name/" + summonerName + "?api_key=" + APIKey
    response = requests.get(URL)
    return response.json()

def main():
    APIKey = (str)(input('Copy and paste your API Key here: '))

    for index, row in df.iterrows():
        summonerName = row['Player_Name']
        responseJSON  = requestSummonerData(summonerName, APIKey)
        ID = responseJSON ['accountId']
        ID = int(ID)
        list.insert(index,ID)

    df["accountId"]= list

【问题讨论】:

What's a good rate limiting algorithm?的可能重复 【参考方案1】:

如果您已经知道每秒只能发出 20 个请求,您只需计算每个请求之间的等待时间:

将 1 秒除以 20,得到 0.05。所以你只需要在每个请求之间睡 0.05 秒,并且你不应该达到限制(如果你想安全的话,可以增加一点)。

import time 在文件顶部,然后在for 循环内time.sleep(0.05)(你也可以只做time.sleep(1/20)

【讨论】:

如果速率限制为每 2 分钟 100 个请求?我必须像那个 time.sleep(120/100) 那样做? 是的,没错! :) 这救了我的培根

以上是关于确定请求的速率限制的主要内容,如果未能解决你的问题,请参考以下文章

aiohttp:限制并行请求的速率

如何限制请求 python 库中 HTTP 请求的下载速率?

如何限制/速率限制请求以防止 Axios 出现 429 错误

几次请求后超出用户速率限制

为 Web 请求实现速率限制算法的最佳方法是啥?

Python 请求,如何限制接收大小、传输速率和/或总时间?