20

是否可以使用requestsPython 库限制 GET 请求的下载速率?例如,使用这样的命令:

r = requests.get('https://stackoverflow.com/')

...是否可以限制下载速率?我希望有类似这个wget命令的东西:

wget --limit-rate=20k https://stackoverflow.com/

我知道这是可能urllib2。我专门询问requests图书馆。

4

2 回答 2

9

有几种限制速率的方法;其中一个是令牌桶,您可以在这里找到一个配方另一个在这里找到

socket.send()通常你会想要对和进行节流或速率限制socket.recv()。您可以玩一下socket-throttle,看看它是否满足您的需求。


x-ratelimit不要与速率限制响应头混淆,后者与请求数量有关,而不是与下载/传输速率有关。

于 2013-07-17T05:27:07.087 回答
1

没有内置支持,但可以使用流 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。

于 2021-07-12T08:20:00.963 回答