女人被做网站,成都seo网站建设,廊坊网站制作套餐,申请网页域名大家好#xff01;我是爱摸鱼的小鸿#xff0c;关注我#xff0c;收看每期的编程干货。 一个简单的库#xff0c;也许能够开启我们的智慧之门#xff0c; 一个普通的方法#xff0c;也许能在危急时刻挽救我们于水深火热#xff0c; 一个新颖的思维方式#xff0c;也许能… 大家好我是爱摸鱼的小鸿关注我收看每期的编程干货。 一个简单的库也许能够开启我们的智慧之门 一个普通的方法也许能在危急时刻挽救我们于水深火热 一个新颖的思维方式也许能激发我们无尽的创造力 一个独特的技巧也许能成为我们的隐形盾牌…… 神奇的 Python 库之旅第 10 章 目录 一、初始 httpx二、初级用法三、异步请求四、高级用法五、总结六、作者Info 一、初始 httpx
说起 Python 里的 HTTP 请求库requests 几乎是无人不知、无人不晓。作为一个简洁易用的库requests 已经帮助无数开发者顺利完成了网络请求。然而随着技术的发展大家对功能和性能的要求越来越高于是 httpx 应运而生。 httpx 是一个比 requests 更强大的库不仅继承了 requests 的简洁易用还支持异步编程、HTTP/2、连接池复用等高级特性。 httpx requests aiohttp 安装 httpx 在开始之前我们需要先安装 httpx运行以下命令
pip install httpxGithub 项目地址 https://github.com/projectdiscovery/httpx 好了工具在手让我们大展身手 …
二、初级用法
httpx 的用法和 requests 非常相似下面我们先来看一些基础用法。 发送一个简单的 GET 请求
import httpxresponse httpx.get(https://jsonplaceholder.typicode.com/posts/1)
print(response.status_code)
print(response.json())是不是很眼熟没错httpx 的用法和 requests 几乎一模一样。如果你用过 requests那么上手 httpx 完全没有问题。 发送一个 POST 请求
import httpxdata {title: foo,body: bar,userId: 1
}response httpx.post(https://jsonplaceholder.typicode.com/posts, jsondata)
print(response.status_code)
print(response.json())POST 请求也同样简单只需要多加一个 json 参数就搞定了。你可以用 json、data、params 等参数来发送不同类型的数据。 处理请求超时 处理请求超时在实际开发中非常重要httpx 也为我们提供了友好的方式。
import httpxtry:response httpx.get(https://httpbin.org/delay/5, timeout3.0)
except httpx.RequestError as exc:print(fAn error occurred while requesting {exc.request.url!r}.)
except httpx.HTTPStatusError as exc:print(fError response {exc.response.status_code} while requesting {exc.request.url!r}.)在这个示例中我们向一个会延迟响应的 URL 发送请求并设置了 3 秒的超时时间。若请求超时或发生其他错误httpx 会抛出相应的异常。
三、异步请求
异步编程可以显著提高程序的性能尤其是在处理大量 I/O 操作时。httpx 提供了异步支持让我们可以轻松编写异步代码。 异步 GET 请求 首先我们来看一个简单的异步 GET 请求示例。
import httpx
import asyncioasync def fetch():async with httpx.AsyncClient() as client:response await client.get(https://jsonplaceholder.typicode.com/posts/1)print(response.status_code)print(response.json())asyncio.run(fetch())是不是很简单通过 async with 语句创建一个异步客户端我们就可以使用 await 来等待请求的响应。 同时发送多个请求 异步编程的一个大优势是可以同时发送多个请求显著缩短总的请求时间。
import httpx
import asyncioasync def fetch(url):async with httpx.AsyncClient() as client:response await client.get(url)return response.json()async def main():urls [https://jsonplaceholder.typicode.com/posts/1,https://jsonplaceholder.typicode.com/posts/2,https://jsonplaceholder.typicode.com/posts/3]tasks [fetch(url) for url in urls]results await asyncio.gather(*tasks)for result in results:print(result)asyncio.run(main())在这个示例中我们使用 asyncio.gather 同时发送了三个请求并打印了每个请求的结果。
四、高级用法
httpx 还提供了许多高级功能如 HTTP/2 支持、代理、连接池等下面我们来逐一介绍。 HTTP/2 支持 HTTP/2 是新一代的 HTTP 协议具有更高的性能和效率。httpx 天然支持 HTTP/2我们只需要进行简单配置。
import httpxclient httpx.Client(http2True)
response client.get(https://www.google.com)
print(response.http_version) # 输出: HTTP/2代理支持 在某些情况下我们需要通过代理发送请求。httpx 支持 HTTP 和 SOCKS 代理。
import httpxproxies {http://: http://10.10.1.10:3128,https://: http://10.10.1.10:1080,
}response httpx.get(https://www.example.com, proxiesproxies)
print(response.text)连接池复用 连接池复用可以显著提升性能尤其是发送大量请求时。httpx 默认启用了连接池复用但我们也可以手动配置。
import httpxclient httpx.Client()
for _ in range(10):response client.get(https://www.example.com)print(response.status_code)
client.close()在这个示例中我们通过同一个客户端发送了 10 次请求httpx 会自动复用连接池提高请求效率。 更多功能详细用法可参考官方文档 https://www.python-httpx.org/#documentation …
五、总结
httpx 作为一个新兴的 Python HTTP 请求库以其简洁的 API 和强大的功能迅速受到了广泛关注。它不仅继承了 requests 的易用性还在性能和功能上做了许多改进尤其是对异步编程和 HTTP/2 的支持。 在本文中我们通过多个代码示例展示了 httpx 的基础用法、异步请求和高级功能。希望这些内容能帮助你更好地理解和使用 httpx无论是开发个人项目还是处理复杂的网络请求httpx 都是一个值得尝试的工具。 如果你对 httpx 感兴趣不妨在你的项目中试用一下相信你会爱上这个强大的库。感谢大家的阅读希望这篇文章能给你带来帮助和启发。
六、作者Info Author小鸿的摸鱼日常 Goal让编程更有趣 专注于 Web 开发、爬虫游戏开发数据分析、自然语言处理AI 等期待你的关注让我们一起成长、一起Coding 版权说明本文禁止抄袭、转载侵权必究