用途:aiohttp 是 Python 异步 HTTP 客户端/服务器框架,适合构建异步 HTTP 服务或客户端,需要细粒度控制路由与中间件、同时需要客户端与服务器能力、支持 WebSocket/SSE,以及流式响应或大文件上传下载的场景。
主要能力:服务端支持 app.router 路由注册、web.json_response/web.Response/web.StreamResponse/web.FileResponse 等响应类型、HTTP 异常类、on_startup/on_cleanup 钩子与 v3.9+ 的 lifespan 上下文、@web.middleware 中间件(计时、鉴权等)以及 SSE 与分块流式输出。客户端支持 ClientSession、TCPConnector 连接池(limit、limit_per_host、ttl_dns_cache 等)、ClientTimeout 分级超时(total、connect、sock_connect、sock_read)。
使用方式:服务端可用 web.Application() 注册路由,并通过 web.run_app(app, host='127.0.0.1', port=8080) 启动;客户端用 async with aiohttp.ClientSession() as session 复用会话。资料建议在应用级复用会话并设置超时,避免每个请求新建会话。
限制与注意:资料指出纯异步,不适合同步代码库;需要 HTTP/2 时可考虑 httpx;需要自动 OpenAPI 文档与内置 Pydantic 校验时可考虑 FastAPI。常见反模式包括请求内新建会话导致 socket 耗尽、缺少总超时、缺少读写/连接超时、跨事件循环复用会话、未释放响应资源。测试与更多中间件、客户端、排障细节见其参考文件,官方文档为 https://docs.aiohttp.org/ 。