自动化&爬虫工作流

FastAPI实战:生产级高性能异步接口开发全流程

发布日期:2026-08-06

本文从零搭建生产可用的FastAPI异步接口服务,支持自动文档、请求限流、异常统一处理、数据库异步操作,实测单进程QPS超过2000。

一、依赖安装

pip install fastapi uvicorn aiomysql slowapi limits

二、完整服务代码

from fastapi import FastAPI, HTTPException
 from slowapi import Limiter, _rate_limit_exceeded_handler
 from slowapi.util import get_remote_address
 from slowapi.errors import RateLimitExceeded
 import aiomysql

 app = FastAPI(title="生产级异步接口服务")
 limiter = Limiter(key_func=get_remote_address)
 app.state.limiter = limiter
 app.add_exception_handler(RateLimitExceeded, _rate_limit_exceeded_handler)

 @app.on_event("startup")
 async def startup_db():
     app.state.db = await aiomysql.connect(
         host="127.0.0.1",
         user="root",
         password="123456",
         db="test_db"
     )

 @app.get("/api/user/{user_id}")
 @limiter.limit("100/minute")
 async def get_user(user_id: int):
     async with app.state.db.cursor() as cur:
         await cur.execute("SELECT * FROM users WHERE id = %s", (user_id,))
         user = await cur.fetchone()
         if not user:
             raise HTTPException(status_code=404, detail="用户不存在")
         return {"id": user[0], "name": user[1], "email": user[2]}

 if __name__ == "__main__":
     import uvicorn
     uvicorn.run(app, host="0.0.0.0", port=8000, workers=4)

三、部署验证

启动服务后自动生成两个接口文档页面:http://127.0.0.1:8000/docs 和 http://127.0.0.1:8000/redoc,所有接口自动生成请求参数校验,不需要手动写校验逻辑,开发效率比传统Flask/Django接口提升至少2倍。

发表评论