Python Requests:后续的request.get是如何处理的?

2 投票
2 回答
2658 浏览
提问于 2025-04-17 14:32
import requests

for i in range(3):
    g = requests.get('http://some-url/')
    print "request done"

每次发起一个请求时,它会等到响应完全到达(也就是加载完成)后再发起下一个请求吗?

我比较了这些请求完成的时间和我浏览器中的请求,发现用Requests的加载时间要快很多。我不确定这是不是因为我的浏览器在执行JavaScript、加载图片等原因,还是因为Requests的工作方式也有影响。

2 个回答

4

是的,requests.get 是一个同步操作。它会等待页面内容被加载到 Python 中,作为字符串来使用。

你看到的时间差其实是因为浏览器在执行 JavaScript 和下载其他文件。

在 Firefox 的开发者工具中,你可以看到下载页面内容所花费的时间。这个时间大致上应该和你在使用 requests 时看到的时间差不多。

4

是的,每个请求都是同步进行的,也就是说,下一次请求只有在上一次请求完成后才会开始。引用一下发布说明

0.13.0 (2012-05-29)

去掉了 Requests.async,改为使用grequests

撰写回答