Python中使用requests_futures.sessionsFuturesSession()发送异步请求
发布时间:2023-12-13 07:42:19
Python的requests_futures库提供了异步发送HTTP请求的功能,可以使用requests_futures.sessions.FuturesSession()创建一个异步请求会话对象。
下面是一个使用requests_futures.sessions.FuturesSession()发送异步请求的示例代码:
import requests
from requests_futures.sessions import FuturesSession
# 创建异步请求会话对象
session = FuturesSession()
# 异步发送GET请求
def get_response(url):
future = session.get(url)
return future
# 异步发送POST请求
def post_response(url, data):
future = session.post(url, data=data)
return future
# 定义回调函数来处理HTTP响应
def process_response(response):
# 处理响应
if response.status_code == 200:
print(response.json())
# 发送多个异步请求
urls = ['http://api.example.com/users/1', 'http://api.example.com/users/2', 'http://api.example.com/users/3']
responses = []
for url in urls:
response_future = get_response(url)
response_future.add_done_callback(process_response)
responses.append(response_future)
# 等待所有异步请求完成
for response in responses:
response.result()
# 发送异步POST请求
data = {'name': 'John Doe', 'email': 'john@example.com'}
response_future = post_response('http://api.example.com/users', data)
response_future.add_done_callback(process_response)
response_future.result()
在上面的示例中,首先我们使用requests_futures.sessions.FuturesSession()创建一个异步请求会话对象session。然后,我们定义了get_response()和post_response()函数来分别发送异步的GET和POST请求。这些函数会返回Future对象,我们可以通过添加回调函数process_response来处理HTTP响应。
在发送多个异步请求时,我们使用get_response()函数发送异步GET请求,并将每个Future对象添加到responses列表中。然后,我们使用response.result()等待所有异步请求完成。
最后,我们使用post_response()函数发送异步POST请求,并将回调函数process_response添加到response_future中,然后使用response_future.result()等待异步请求完成。
总结一下,使用requests_futures.sessions.FuturesSession()可以方便地发送异步请求,使得我们可以在发送请求时同时处理其他任务,提高代码的效率和性能。
