是否可以使用requests Python库来限制GET请求的下载速率?例如,使用如下命令:
r = requests.get('https://stackoverflow.com/')...is可以限制下载速率吗?我希望得到类似于这个wget命令的东西:
wget --limit-rate=20k https://stackoverflow.com/我知道是possible和urllib2在一起。我特别问的是requests库。
发布于 2013-07-17 13:27:07
有几种速率限制的方法;其中之一是token bucket,您可以找到a recipe here和another one here。
通常,您会希望在socket.send()和socket.recv()上执行节流或速率限制。你可以使用socket-throttle,看看它是否能满足你的需求。
这不能与x-ratelimit rate limiting response headers混淆,后者与许多请求相关,而不是与下载/传输速率相关。
发布于 2021-07-12 16:20:01
没有内置的支持,但是可以使用流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)
...在advanced usage中,它允许您一次检索较小数量的响应。
在我的网络中,上面的例子(产生一个几GB的大文件)没有休眠,带宽为17.4MB/s,休眠为1ms,带宽为2.5MB/s。
https://stackoverflow.com/questions/17691231
复制相似问题