是否可以使用requests
Python 库限制 GET 请求的下载速率?例如,使用这样的命令:
r = requests.get('https://stackoverflow.com/')
...是否可以限制下载速率?我希望有类似这个wget
命令的东西:
wget --limit-rate=20k https://stackoverflow.com/
我知道这是可能的urllib2
。我专门询问requests
图书馆。
是否可以使用requests
Python 库限制 GET 请求的下载速率?例如,使用这样的命令:
r = requests.get('https://stackoverflow.com/')
...是否可以限制下载速率?我希望有类似这个wget
命令的东西:
wget --limit-rate=20k https://stackoverflow.com/
我知道这是可能的urllib2
。我专门询问requests
图书馆。
有几种限制速率的方法;其中一个是令牌桶,您可以在这里找到一个配方,另一个在这里找到。
socket.send()
通常你会想要对和进行节流或速率限制socket.recv()
。您可以玩一下socket-throttle
,看看它是否满足您的需求。
x-ratelimit
不要与速率限制响应头混淆,后者与请求数量有关,而不是与下载/传输速率有关。
没有内置支持,但可以使用流 api。
>>> import requests
>>> import time
>>> req = requests.request('GET', 'https://httpbin.org/get', stream=True)
>>> for data in req.iter_content(chunk_size=1024):
... time.sleep(0.001)
...
在高级用法中,它允许您一次检索较小数量的响应。
在我的网络中,上面的示例(导致几个 GB 的大文件)没有睡眠的带宽为 17.4 MB/s,睡眠为 1 ms 的带宽为 2.5 MB/s。