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

时间:2013-07-17 04:40:42

标签: python http httprequest wget python-requests

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

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

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

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

我知道possibleurllib2。我是专门询问requests库。

2 个答案:

答案 0 :(得分:6)

有几种限速方法;其中一个是token bucket,您可以找到a recipe hereanother one here

通常,您希望对socket.send()socket.recv()进行限制或限速。您可以使用socket-throttle进行游戏,看看它是否符合您的要求。


这不应与x-ratelimit rate limiting response headers混淆,{{3}}与多个请求相关,而不是与下载/传输速率相关。

答案 1 :(得分:0)

没有内置支持,但可以使用流 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.4 MBps,睡眠 1 毫秒为 2.5 MB/s。