集成prometheus
| from prometheus_fastapi_instrumentator import Instrumentator |
| |
| instrumentator = Instrumentator() |
| instrumentator.instrument(app) |
| |
| @app.on_event("startup") |
| async def _startup(): |
| instrumentator.expose(app,endpoint="/healthz/metrics",tags=["healthz"]) |
过滤health check 日志
| import logging |
| |
| class EndpointFilter(logging.Filter): |
| def filter(self, record: logging.LogRecord) -> bool: |
| return record.getMessage().find("/healthz") == -1 |
| logging.getLogger("uvicorn.access").addFilter(EndpointFilter()) |
sqlmodel自定义postgres schema
| from sqlmodel import SQLModel, Field |
| |
| class Item(SQLModel, table=True): |
| __table_args__ = {'schema': 'myschema'} |
sqlmodel自定义postgres 列名
| from sqlmodel import SQLModel, Field |
| |
| class Item(SQLModel, table=True): |
| id: int | None = Field(default=None, primary_key=True,sa_column_kwargs={"name": "myId"}) |
fastapi docker ci
bitbucket pipeline里需要先cd到根目录
| FROM python:3.13 AS base |
| WORKDIR /app |
| EXPOSE 80 |
| |
| COPY ./requirements.txt /app/requirements.txt |
| RUN pip install --no-cache-dir --upgrade -r /app/requirements.txt |
| |
| COPY ./app /app/app |
| |
| CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"] |
部署到k8s swagger报错
ingress带path导致, 设置root_path,增加一个环境变量ROOT_PATH,本地设为空,其它环境则设为域名后面的path
| app = FastAPI( |
| docs_url="/swagger", |
| root_path= settings.ROOT_PATH |
| ) |
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步