在 Azure App Service 上的 Python — 代码部署
将 Python(Flask、Django、FastAPI、通用)代码部署到 Azure App Service Linux(P0v3、Python 3.14)。如果缺失,创建 RG + Plan + Web App。对于 VNet、Key Vault、数据库或 IaC,交给 azure-prepare。
使用的 MCP 工具:mcp_azure_mcp_subscription_list、mcp_azure_mcp_group_list、mcp_azure_mcp_appservice、mcp_azure_mcp_azd(当存在 azure.yaml 时)。
工作流程
- 解析上下文 — 智能默认值,最少提示。 只有应用名称是交互式的;RG(
<app>-rg)、Plan(<app>-plan)、区域(当前az默认值或eastus2)、订阅均会派生。[create-app.md](references/create-app.md) §1。 - 检测框架(建议性,绝不阻塞)。[detect.md](references/detect.md)。
- 选择路径 — 如果
azure.yaml中host: appservice→ [deploy-azd.md](references/deploy-azd.md);否则 [deploy-azcli.md](references/deploy-azcli.md)。 - 确保 RG → Plan(
P0v3 --is-linux)→ Web App(--runtime "PYTHON:3.14") 存在。遇到瞬时 ARM 错误时,遵循 [transient-retry.md](references/transient-retry.md)。[create-app.md](references/create-app.md)。 - 设置启动命令 — Flask/Django:无(Oryx 自动检测)。FastAPI:始终使用
python -m uvicorn main:app --host 0.0.0.0。其他:警告。[startup-commands.md](references/startup-commands.md)。 - 设置
SCM_DO_BUILD_DURING_DEPLOYMENT=true。 - 部署 —
azd deploy或az webapp deploy --type zip --track-status false。 - STOP。打印部署后消息([post-deploy-message.md](references/post-deploy-message.md))并结束本轮。
硬性规则
- ⛔ 禁止部署后验证 — 部署返回后,不要运行
az webapp log tail、curl、Invoke-WebRequest或任何健康探测。App Service 需要 2–3 分钟预热;日志安静或早期 5xx 不是失败。 - ⛔ Shell 安全 — 对于
--runtime,始终使用"PYTHON:3.14"(冒号)。绝不使用"PYTHON|3.14"(管道是 shell 操作符)。 - ⛔ 绝不使用
az webapp up— 已弃用。使用步骤 7 的命令。 - ✅ URL 格式 — 以
https://...URL 形式呈现端点。
错误处理
参见 [errors.md](references/errors.md) 获取完整的症状 → 原因 → 修复矩阵。快速分诊:缺少 plan/app → 重新运行步骤 4;容器在 8000 上 ping 超时 → 修复启动(步骤 5);部署后出现 ModuleNotFoundError → 确保运行了步骤 6,然后重新部署。