Inicio rápido: Implementación de una aplicación web de Python (Django, Flask o FastAPI) en Azure App Service

En este inicio rápido, implementará una aplicación web de Python (Django, Flask o FastAPI) para Azure App Service. Azure App Service es un servicio de hospedaje web totalmente administrado, que admite aplicaciones de Python hospedadas en un entorno de servidor Linux.

Para completar este inicio rápido necesita instalar:

Nota:

Este artículo contiene instrucciones actuales sobre cómo implementar una aplicación web Python utilizando Azure App Service. Python en Windows ya no se admite.

Salta al final

Puede implementar rápidamente la aplicación de ejemplo en este tutorial mediante la CLI para desarrolladores de Azure y verla en ejecución en Azure. Solo tiene que ejecutar los siguientes comandos en el deseo de Azure Cloud Shelly siga el símbolo del sistema:

mkdir flask-quickstart
cd flask-quickstart
azd init --template https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart
azd up

Además, para eliminar los recursos:

azd down

Aplicación de ejemplo

Este inicio rápido se puede completar mediante Flask, Django o FastAPI. Se proporciona una aplicación de ejemplo en cada marco para ayudarle a seguir este inicio rápido. Descargue o clone la aplicación de ejemplo en la estación de trabajo local.

git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart

Ejecución de la aplicación de forma local:

  1. Vaya a la carpeta de la aplicación:

    cd msdocs-python-flask-webapp-quickstart
    
  2. Cree un entorno virtual para la aplicación:

    py -m venv .venv
    .venv\scripts\activate
    
  3. Instale las dependencias:

    pip install -r requirements.txt
    
  4. Ejecute la aplicación:

    flask run
    
  5. Vaya a la aplicación de ejemplo en http://localhost:5000, en un explorador web.

    Recorte de pantalla de la aplicación Flask que se ejecuta localmente en un explorador

¿Tiene problemas? Póngase en contacto con nosotros.

Creación de una aplicación web en Azure

Para hospedar la aplicación en Azure, debe crear una aplicación web de Azure App Service en Azure. Puede crear una aplicación web mediante la CLI de Azure, VS Code, el paquete de extensiones Azure Tools o Azure Portal.

Los comandos de la CLI de Azure pueden ejecutarse en un equipo que tenga instalada la CLI de Azure.

Crea los recursos de Azure y luego despliega tu aplicación usando comandos de CLI de Azure separados.

Si es necesario, inicie sesión en Azure mediante az login.

az login

Sustituye <app-name> por un nombre único a nivel global. Crea un grupo de recursos y un plan de App Service, y luego crea la aplicación web usando az webapp create.

az group create --name myResourceGroup --location eastus
az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku P0v3 --is-linux
az webapp create --name <app-name> --resource-group myResourceGroup --plan myAppServicePlan --runtime "PYTHON:3.14"
az webapp config appsettings set --name <app-name> --resource-group myResourceGroup --settings SCM_DO_BUILD_DURING_DEPLOYMENT=true
  • Usa el parámetro --runtime para especificar la versión de Python con la que se ejecuta tu aplicación. Este ejemplo utiliza Python 3.14. Para listar los entornos de ejecución de Python compatibles, utiliza az webapp list-runtimes --os-type linux --runtime python --output table.
  • Utiliza el parámetro --sku para definir el tamaño (CPU y memoria) y el coste del plan de App Service. Este ejemplo utiliza el plan de servicio P0v3 (Premium v3), que implica un coste en tu suscripción a Azure. Para obtener una lista completa de los planes de App Service, consulte Precios de App Service.
  • Sustituye eastus por tu región preferida. Para listar las regiones disponibles, ejecuta az account list-locations con --output table.
  • La SCM_DO_BUILD_DURING_DEPLOYMENT opción permite la compilación de Oryx, incluyendo la instalación de las dependencias en requirements.txt, cuando despliegas el archivo fuente.

Crea un archivo ZIP con los archivos de la aplicación, incluyendo requirements.txt, en la raíz del archivo ZIP. Excluye archivos locales como .venv, .git y .env. Para instrucciones específicas de la plataforma, consulta Crear un archivo ZIP de tu aplicación en la pestaña Implementar mediante un archivo ZIP. Luego despliega el archivo usando az webapp deploy:

az webapp deploy --name <app-name> --resource-group myResourceGroup --src-path <zip-file-path> --type zip

El despliegue puede durar unos minutos. Navega a https://<app-name>.azurewebsites.net para ver tu app. Para transmitir logs, actívalos ejecutando az webapp log config --name <app-name> --resource-group myResourceGroup --docker-container-logging filesystem, y luego ejecutando az webapp log tail --name <app-name> --resource-group myResourceGroup.

¿Tiene problemas? Póngase en contacto con nosotros.

Implementación del código de la aplicación en Azure

Azure App Service admite varios métodos para implementar el código de aplicación en Azure, lo que incluye Acciones de GitHub y todas las herramientas de CI/CD principales. Este artículo se centra en cómo implementar el código desde la estación de trabajo local en Azure.

Los comandos de CLI de Azure en el paso anterior crearon los recursos y desplegaron tu aplicación. Puedes pasar al siguiente paso.


¿Tiene problemas? Consulte primero la Guía de solución de problemas. Si eso no le ayuda, infórmenos.

Configuración del script de inicio

En función de la presencia de determinados archivos en una implementación, App Service detecta automáticamente si una aplicación es una aplicación de Django o Flask y realiza los pasos predeterminados para ejecutar la aplicación. Para aplicaciones basadas en otros frameworks web como FastAPI, puede que necesites configurar un script de inicio para que App Service ejecute tu app. De lo contrario, App Service ejecuta una aplicación predeterminada de solo lectura ubicada en la carpeta opt/defaultsite .

  • Python 3.14 y posteriores: App Service detecta y ejecuta automáticamente las aplicaciones FastAPI. No se requiere ningún comando de arranque.
  • Python 3.13 y anteriores: Debes configurar un comando de arranque personalizado.

Para más información sobre cómo App Service ejecuta aplicaciones de Python y cómo puede configurar y personalizar su comportamiento con la aplicación, consulte Configuración de una aplicación de Python de Linux para Azure App Service.

App Service detecta automáticamente la presencia de una aplicación de Flask. No se necesita ninguna configuración adicional para este inicio rápido.

Navegación hasta la aplicación

Vaya a la aplicación implementada en el explorador web. Puede seguir un vínculo desde Azure Portal. Vaya a la página Información general y seleccione Dominio predeterminado. Si ve un página de aplicación predeterminada, espere un momento y actualice el explorador.

El código de ejemplo de Python se ejecuta en un contenedor de Linux en App Service con una imagen integrada.

Recorte de pantalla de la aplicación que se ejecuta en Azure

Felicidades. Ha implementado su primera aplicación Python en App Service en Linux.

¿Tiene problemas? Consulte primero la Guía de solución de problemas. Si eso no le ayuda, infórmenos.

Transmisión de registros

Azure App Service captura toda la salida de mensajes hacia la consola para ayudarle a diagnosticar problemas de la aplicación. Las aplicaciones de ejemplo incluyen instrucciones de print() para demostrar esta funcionalidad.

@app.route('/')
def index():
   print('Request for index page received')
   return render_template('index.html')

@app.route('/favicon.ico')
def favicon():
    return send_from_directory(os.path.join(app.root_path, 'static'),
                               'favicon.ico', mimetype='image/vnd.microsoft.icon')

@app.route('/hello', methods=['POST'])
def hello():
   name = request.form.get('name')

   if name:
       print('Request for hello page received with name=%s' % name)
       return render_template('hello.html', name = name)
   else:
       print('Request for hello page received with no name or blank name -- redirecting')
       return redirect(url_for('index'))

Puede revisar el contenido de los registros de diagnóstico de App Service mediante la CLI de Azure, VS Code o Azure Portal.

Primero debe configurar Azure App Service para generar registros en el sistema de archivos de App Service mediante el comando az webapp log config.

az webapp log config \
    --web-server-logging filesystem \
    --name $APP_SERVICE_NAME \
    --resource-group $RESOURCE_GROUP_NAME

Para transmitir registros, use el comando az webapp log tail.

az webapp log tail \
    --name $APP_SERVICE_NAME \
    --resource-group $RESOURCE_GROUP_NAME

Actualice la página principal de la aplicación o pruebe otras solicitudes para generar algunos mensajes de registro. La salida debe tener una apariencia similar a la siguiente.

Starting Live Log Stream ---

2021-12-23T02:15:52.740703322Z Request for index page received
2021-12-23T02:15:52.740740222Z 169.254.130.1 - - [23/Dec/2021:02:15:52 +0000] "GET / HTTP/1.1" 200 1360 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/hello" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:15:52.841043070Z 169.254.130.1 - - [23/Dec/2021:02:15:52 +0000] "GET /static/bootstrap/css/bootstrap.min.css HTTP/1.1" 200 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:15:52.884541951Z 169.254.130.1 - - [23/Dec/2021:02:15:52 +0000] "GET /static/images/azure-icon.svg HTTP/1.1" 200 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:15:53.043211176Z 169.254.130.1 - - [23/Dec/2021:02:15:53 +0000] "GET /favicon.ico HTTP/1.1" 404 232 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"

2021-12-23T02:16:01.304306845Z Request for hello page received with name=David
2021-12-23T02:16:01.304335945Z 169.254.130.1 - - [23/Dec/2021:02:16:01 +0000] "POST /hello HTTP/1.1" 200 695 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:16:01.398399251Z 169.254.130.1 - - [23/Dec/2021:02:16:01 +0000] "GET /static/bootstrap/css/bootstrap.min.css HTTP/1.1" 304 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/hello" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:16:01.430740060Z 169.254.130.1 - - [23/Dec/2021:02:16:01 +0000] "GET /static/images/azure-icon.svg HTTP/1.1" 304 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/hello" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"

¿Tiene problemas? Consulte primero la Guía de solución de problemas. Si eso no le ayuda, infórmenos.

Limpieza de recursos

Cuanda haya terminado con la aplicación de muestra, puede quitar todos los recursos de la aplicación de Azure. Quitar el grupo de recursos garantiza que no incurre en cargos adicionales y ayuda a mantener ordenada la suscripción de Azure. Al quitar el grupo de recursos también se quitan todos los recursos que haya dentro; es la manera más rápida de quitar todos los recursos de Azure de la aplicación.

Elimine el grupo de recursos con el comando az group delete.

az group delete \
    --name msdocs-python-webapp-quickstart \
    --no-wait

El argumento --no-wait permite la devolución del comando antes de que se complete la operación.

¿Tiene problemas? Póngase en contacto con nosotros.

Pasos siguientes