python requests 不阻塞
时间: 2023-08-16 12:16:58 浏览: 259
python requests
对于 Python 中的 requests 库,默认情况下是阻塞的,也就是说当发送一个请求时,程序会等待服务器返回响应后才继续执行下一行代码。但是你可以通过使用异步请求的方式来实现不阻塞的效果。
一种常见的方法是使用 asyncio 和 aiohttp 库来实现异步请求。你可以使用 asyncio 库创建一个事件循环,并在其中使用 aiohttp 库发送异步请求。这样可以同时发送多个请求,而不需要等待每个请求的响应。
以下是一个简单示例代码:
```python
import asyncio
import aiohttp
async def make_request(url):
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
return await response.text()
async def main():
urls = ['https://www.example.com', 'https://www.example.org', 'https://www.example.net']
tasks = [make_request(url) for url in urls]
responses = await asyncio.gather(*tasks)
for response in responses:
print(response)
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
```
在上面的代码中,我们定义了一个 `make_request` 函数,它使用 aiohttp 发送异步 GET 请求,并返回响应的文本内容。在 `main` 函数中,我们创建了一个任务列表,并使用 `asyncio.gather` 方法来等待并获取所有请求的响应。
通过这种方式,你可以实现并发发送多个请求,而不会阻塞主程序的执行。请注意,以上代码只是一个简单示例,你可以根据自己的需求进行扩展和修改。
阅读全文