Python en Azure App Service — Despliegue de código
Despliega código Python (Flask, Django, FastAPI, genérico) en Azure App Service Linux (P0v3, Python 3.14). Crea RG + Plan + Web App si faltan. Delega a azure-prepare para VNet, Key Vault, bases de datos o IaC.
Herramientas MCP usadas: mcp_azure_mcp_subscription_list, mcp_azure_mcp_group_list, mcp_azure_mcp_appservice, mcp_azure_mcp_azd (cuando azure.yaml está presente).
Flujo de trabajo
- Resolver contexto — valores predeterminados inteligentes, solicitudes mínimas. Solo el nombre de la aplicación es interactivo; RG (
<app>-rg), Plan (<app>-plan), región (actual por defectoazoeastus2), suscripción se derivan. create-app.md §1. - Detectar framework (informativo, nunca bloquea). detect.md.
- Elegir ruta —
azure.yamlhost: appservice → deploy-azd.md; de lo contrario deploy-azcli.md. - Asegurar que existan RG → Plan (
P0v3 --is-linux) → Web App (--runtime "PYTHON:3.14") . En errores ARM transitorios, seguir transient-retry.md. create-app.md. - Configurar inicio — Flask/Django: ninguno (Oryx detecta automáticamente). FastAPI: siempre
python -m uvicorn main:app --host 0.0.0.0. Otros: advertir. startup-commands.md. - Establecer
SCM_DO_BUILD_DURING_DEPLOYMENT=true. - Desplegar —
azd deployoaz webapp deploy --type zip --track-status false. - DETENER. Imprimir el mensaje posterior al despliegue (post-deploy-message.md) y finalizar el turno.
Reglas estrictas
- ⛔ SIN VERIFICACIÓN POSTERIOR AL DESPLIEGUE — después de que el despliegue regrese, no ejecute
az webapp log tail,curl,Invoke-WebRequestni ninguna sonda de salud. App Service necesita 2–3 min para calentar; un registro silencioso o un 5xx temprano no es una falla. - ⛔ SEGURIDAD DEL SHELL — para
--runtimeuse siempre"PYTHON:3.14"(dos puntos). Nunca"PYTHON|3.14"(la tubería es un operador del shell). - ⛔ NUNCA
az webapp up— obsoleto. Use los comandos del Paso 7. - ✅ FORMATO DE URL — presente los puntos finales como URLs
https://....
Manejo de errores
Consulte errors.md para la matriz completa de síntoma → causa → solución. Triaje rápido: falta plan/app → re-ejecutar Paso 4; tiempo de espera de ping de contenedor en 8000 → corregir inicio (Paso 5); ModuleNotFoundError después del despliegue → asegurar que el Paso 6 se ejecutó, redeploy.