Azure App Service新增FastAPI端点无法访问问题求助
问题排查请求
我通过Docker Hub私有仓库的镜像部署了Azure App Service实例,按要求用FTPS把应用文件上传到/wwwroot目录。初始状态下API的1个端点正常运行,但之后通过FTPS修改文件并新增了一个端点,运行实例后找不到新端点,访问/docs查看Swagger文档时也未显示该端点。我确认实例内的文件是正常的,且本地Docker容器运行完全正常。当前使用的是每日限制60分钟的F1免费实例,不确定是否与此问题有关,恳请协助排查。
相关代码
路由文件
from typing import Union from fastapi import APIRouter from fastapi import Depends from fastapi import HTTPException from ..extensions.database import get_resp_dict from ..extensions.database import get_sla_dict from ..extensions.schemas import TaskResponsibleResponse from ..extensions.schemas import TaskResponsibleSetterSchema from ..extensions.schemas import TaskSlaResponse from ..extensions.schemas import TaskSlaSetterSchema from ..extensions.security import authenticate_request router = APIRouter(prefix="/flow/contractmanager", tags=["Flows"]) @router.post("/") def get_task_responsible( request: TaskResponsibleSetterSchema, resp_dict: dict = Depends(get_resp_dict), token: dict = Depends(authenticate_request), ) -> Union[TaskResponsibleResponse, None]: """Get the task responsible by directory""" try: task_responsible = resp_dict[request.directory] except KeyError | Exception: raise HTTPException(400, detail="Directory not found") return TaskResponsibleResponse(directory=request.directory, responsible=task_responsible) @router.post("/sla") def set_task_sla( request: TaskSlaSetterSchema, sla_dict: dict = Depends(get_sla_dict), token: dict = Depends(authenticate_request) ) -> Union[TaskSlaResponse, None]: """Get the task SLA by category""" try: task_sla = sla_dict[request.category] except KeyError | Exception: raise HTTPException(400, detail="Directory not found") return TaskSlaResponse(category=request.category, sla=task_sla)
Dockerfile
FROM python:3.11-slim WORKDIR /app ENV POETRY_VIRTUALENVS_CREATE=false ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 RUN apt-get update && apt-get install -y libpq-dev gcc RUN pip install poetry COPY . . RUN poetry install --without dev --no-interaction --no-ansi EXPOSE 8000 RUN chmod +x /app/docker-entrypoint.sh CMD ["./docker-entrypoint.sh"]
docker-entrypoint.sh
#!/bin/sh poetry run uvicorn senior.main:app --host 0.0.0.0 --port 8000
主文件代码
from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from .extensions.settings import config from .routes.task import router as task_router def create_app(title: str, description: str, routes: list) -> FastAPI: """App factory""" app = FastAPI(title=title, description=description) for route in routes: app.include_router(route) app.add_middleware(CORSMiddleware, allow_origins=config.origins, allow_methods=config.methods) return app app = create_app(config.title, config.description, [task_router])
补充信息
- 实例配置截图:显示Azure App Service容器部署的核心配置,包含镜像来源、启动命令等设置项
- 本地运行截图:本地Docker容器启动后,Swagger文档中正常显示新增的
/flow/contractmanager/sla端点
内容的提问来源于stack exchange,提问作者pdrferrari
相关产品推荐
相关产品推荐

