网络
作为客户端一般用指的是使用python来访问接口,作为服务器一般指的是使用python来提供写接口服务。
作为客户端
一般是发http请求,接收http响应。
Python 中常用的HTTP 客户端有 requests 和 httpx。其中httpx是requests的替代品,更现代、功能更强大: 兼容90%以上的requests api,并且支持异步请求,还支持http2/3。
通过 httpx.Client() 创建实例后再发送请求, 可以复用连接,提高性能。
提示
直接调用httpx.get(),每次请求都新建连接,结束后立即关闭。每次都要进行 TCP/TLS 握手。还不能不记录和敷用 Cookies 或 Auth 信息。适用于一次性的、临时的请求。
作为服务器
一般是接收http请求,发送http响应。
Python 中常用的HTTP 服务器有 flask 和 fastapi等。其中fastapi是flask的替代品,更现代、功能更强大。
提示
FastApi是基于ASGI规范的框架(你也可以不用框架纯手撸,但是很枯燥),ASGI是WSGI的升级版,WSGI是Python社区定义的规范。 ASGI 服务器有很多,如Uvicorn、Hypercorn 等,ASGI 服务器是必需的运行时环境。在一个运行中的 FastAPI 应用里,存在三个层级:
- 协议规范 (ASGI): 规定了服务器和框架之间如何对话的“协议文档”,点击这里可查看ASGI规范定义
- ASGI框架 (如FastAPI): 你写代码地方。负责逻辑、路由、参数检查。它实现了 ASGI 协议,So它知咋接收服务器传来的数据
- ASGI服务器 (Uvicorn): 真正的“体力劳动者”。它负责监听端口、处理原始的 TCP 连接、解析 HTTP 协议,然后按照 ASGI 规范把请求“翻译”给 FastAPI。
uvicorn 是一个 Python 的 ASGI Web 服务器。简单说:它用来运行 FastAPI、Starlette 这类异步 Python Web 应用。

