一、简介
Python httpx 是一个高性能的异步 HTTP 客户端库,它是 Python requests 库的一个增强版。Python httpx 支持异步 HTTP 请求,并且提供了许多新特性,例如支持 HTTP/2、支持异步代理和身份验证等。
二、特性
1、支持HTTP/2
Python httpx 提供了对 HTTP/2 的完整支持。HTTP/2 是 HTTP/1.1 的升级版本,它使用二进制协议来传输数据,可以提高传输效率。
import httpx
async with httpx.AsyncClient() as client:
response = await client.get("https://httpbin.org/get", headers={"accept": "application/json"})
print(response)
2、支持异步代理
Python httpx 支持异步代理,可以通过 HTTP, HTTP Basic Auth, SOCKS, SOCKS Basic Auth 等不同类型的代理来发送请求。
import httpx
proxies = {
"http://myproxy:8080",
"https://myproxy:8080",
}
async with httpx.AsyncClient(proxies=proxies) as client:
response = await client.get("https://httpbin.org/get")
print(response)
3、支持身份验证
Python httpx 支持多种身份验证方式,包括 HTTP Basic Auth、Digest Auth 等。
import httpx
auth = httpx.BasicAuth("username", "password")
async with httpx.AsyncClient(auth=auth) as client:
response = await client.get("https://httpbin.org/basic-auth/username/password")
print(response)
三、安装
Python httpx 可以通过以下命令进行安装:
pip install httpx
同时,还需要安装 Python 3.6 及以上版本。
四、使用
Python httpx 的使用和 requests 库比较类似。以下是一个使用 Python httpx 发送 HTTP GET 请求的示例:
import httpx
async with httpx.AsyncClient() as client:
response = await client.get("https://httpbin.org/get")
print(response.status_code)
print(response.text)
以上代码使用 AsyncClient 来创建一个异步的 HTTP 客户端,并发送 HTTP GET 请求。可以通过 response 对象来获取请求的结果。
五、性能比较
Python httpx 的性能比 requests 库更好,特别是在发送大量请求时。以下是一个简单的性能比较:
import requests
import httpx
import time
N = 1000
start = time.time()
for i in range(N):
response = requests.get("https://httpbin.org/get")
print("requests elapsed time", time.time() - start)
start = time.time()
with httpx.Client() as client:
for i in range(N):
response = client.get("https://httpbin.org/get")
print("httpx elapsed time", time.time() - start)
以上代码使用 requests 和 Python httpx 分别发送 1000 个 HTTP GET 请求,并计算每个请求的响应时间。在这个简单的测试中,Python httpx 比 requests 快了约 3 倍。
六、总结
Python httpx 是一个功能强大、性能优越的异步 HTTP 客户端库。它是 Python requests 库的一个增强版,支持 HTTP/2、异步代理、身份验证等许多新特性。如果你需要一个高性能的异步 HTTP 客户端库,那么 Python httpx 绝对是个好选择。