欢迎访问宙启技术站
智能推送

在Python中使用requests.sessions.Session()发送异步请求

发布时间:2024-01-21 01:05:37

在Python中,可以使用requests库来发送HTTP请求。requests.sessions.Session()是一个会话对象,可以用于发送异步请求。

下面是一个使用requests.sessions.Session()发送异步请求的例子:

import requests
import asyncio
import time

async def send_request(session, url):
    start_time = time.time()
    response = await session.get(url)
    end_time = time.time()
    print(f"Response from {url}: {response.status_code} (Time: {end_time - start_time:.2f} seconds)")

async def main():
    urls = ['http://www.example.com', 'http://www.google.com', 'http://www.facebook.com']
    session = requests.sessions.Session()

    tasks = []
    for url in urls:
        tasks.append(asyncio.create_task(send_request(session, url)))

    await asyncio.gather(*tasks)

asyncio.run(main())

在这个例子中,我们定义了一个异步函数send_request用于发送请求。它接受一个会话对象session和一个URL作为参数,并使用session.get()方法发送GET请求。

main函数中,我们创建了一个会话对象session,然后定义了一个URL列表。接下来,我们创建了一个任务列表tasts,其中每个任务都是通过asyncio.create_task()创建的。每个任务都是调用send_request函数,并传递相关的会话对象和URL参数。

最后,我们调用asyncio.gather()方法来等待所有的任务完成。asyncio.gather()会接受一个或多个任务作为参数,并返回一个包含所有任务结果的列表。我们使用await关键字来等待任务的完成。

运行这个程序,你将会看到类似如下的输出:

Response from http://www.example.com: 200 (Time: 0.31 seconds)
Response from http://www.google.com: 200 (Time: 0.47 seconds)
Response from http://www.facebook.com: 200 (Time: 0.57 seconds)

这个例子展示了如何使用requests.sessions.Session()发送异步请求。通过使用异步编程模型,可以同时发送多个请求,从而提高程序的性能和效率。