grequests是一个基于Python requests库的异步HTTP请求库。它允许开发者并发地发送多个请求,并在它们的响应返回时处理它们。
下面是一个简单的例子,展示如何使用grequests来并行获取多个URL的内容:
import grequests
urls = [
'http://httpbin.org/get',
'http://httpbin.org/status/404',
'http://httpbin.org/status/500'
]
# 发送异步请求
rs = (grequests.get(u) for u in urls)
response_list = grequests.map(rs)
# 处理响应结果
for response in response_list:
if response is not None:
print(response.headers['Content-Type'])
print(response.text)
else:
print("请求出错!")
在这个例子中,我们创建了一个包含多个URL的列表。然后,通过一个生成器表达式,我们将每个URL转化为一个grequests.get()请求对象,并将这些请求对象传递给grequests.map()函数。该函数将异步地发送这些请求对象,并等待每个请求的响应返回,然后返回一个包含所有响应对象的列表。
我们可以通过遍历这个列表来处理每个响应。如果响应为None,则说明请求出错。否则,我们可以访问响应对象的headers和text属性,分别获取响应的头信息和内容。
总之,grequests是一个非常有用的Python库,它的异步请求API可以对于需要大量请求的业务场景提供明显的性能优化。