Compartir vía


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

Nota:

A partir del 1 de junio de 2024, todas las aplicaciones de App Service recién creadas tendrán la opción de generar un nombre de host predeterminado único mediante la convención de nomenclatura <app-name>-<random-hash>.<region>.azurewebsites.net. Los nombres de aplicación existentes permanecerán sin cambios.

Ejemplo: myapp-ds27dh7271aah175.westus-01.azurewebsites.net

Para más información, consulte Nombre de host predeterminado único para el recurso 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 la implementación de una aplicación web de Python mediante Azure App Service. Python en Windows ya no se admite.

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.

    Captura de pantalla de la aplicación Flask ejecutándose localmente en un navegador

¿Tiene problemas? Háganoslo saber.

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.

La CLI de Azure dispone de un comando az webapp up que creará los recursos necesarios e implementará la aplicación en un solo paso.

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

az login

Cree la aplicación web y otros recursos y, a continuación, implemente el código en Azure mediante az webapp up.

az webapp up --runtime PYTHON:3.9 --sku B1 --logs
  • El parámetro --runtime especifica qué versión de Python está ejecutando la aplicación. Este ejemplo utiliza Python 3.9. Para enumerar todos los runtimes disponibles, use el comando az webapp list-runtimes --os linux --output table.
  • El parámetro --sku define el tamaño (CPU, memoria) y el costo del plan de App Service. En este ejemplo se usa el plan de servicio B1 (Básico), que incurrirá en un pequeño coste en la suscripción de Azure. Para obtener una lista completa de los planes de App Service, vea la página Precios de App Service.
  • La marca --logs configura el registro predeterminado necesario para habilitar la visualización de la secuencia de registro inmediatamente después de iniciar la aplicación web.
  • Opcionalmente, puede especificar un nombre con el argumento --name <app-name>. Si no proporciona un nombre, se generará automáticamente.
  • Opcionalmente, incluya el argumento --location <location-name>, donde <location_name> es una región de Azure disponible. Puede recuperar una lista de las regiones permitidas para su cuenta de Azure mediante la ejecución del comando az appservice list-locations.

El comando puede tardar varios minutos en completarse. Mientras el comando se ejecuta, proporciona mensajes sobre la creación del grupo de recursos, el plan de App Service y el recurso de la aplicación, la configuración del registro y la implementación del archivo ZIP. A continuación, se muestra el mensaje "Puede iniciar la aplicación en http://<nombre_de_la_aplicación>.azurewebsites.net", que es la dirección URL de la aplicación en Azure.

The webapp '<app-name>' doesn't exist
Creating Resource group '<group-name>' ...
Resource group creation complete
Creating AppServicePlan '<app-service-plan-name>' ...
Creating webapp '<app-name>' ...
Configuring default logging for the app, if not already enabled
Creating zip with contents of dir /home/cephas/myExpressApp ...
Getting scm site credentials for zip deployment
Starting zip deployment. This operation can take a while to complete ...
Deployment endpoint responded with status code 202
You can launch the app at http://<app-name>.azurewebsites.net
{
  "URL": "http://<app-name>.azurewebsites.net",
  "appserviceplan": "<app-service-plan-name>",
  "location": "centralus",
  "name": "<app-name>",
  "os": "<os-type>",
  "resourcegroup": "<group-name>",
  "runtime_version": "python|3.9",
  "runtime_version_detected": "0.0",
  "sku": "FREE",
  "src_path": "<your-folder-location>"
}

Nota

El comando az webapp up realiza las acciones siguientes:

¿Tiene problemas? Háganoslo saber.

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.

Dado que el comando az webapp up anterior creó los recursos necesarios e implementó la aplicación en un solo paso, puede 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. En el caso de las aplicaciones basadas en otros marcos web como FastAPI, debe configurar un script de inicio para que App Service ejecute la aplicación; de lo contrario, App Service ejecutará una aplicación de solo lectura predeterminada ubicada en la carpeta opt/defaultsite.

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 mediante la dirección URL http://<app-name>.azurewebsites.net. 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.

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

¡Enhorabuena! 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? Háganoslo saber.

Pasos siguientes