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:
- Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
- Python 3.9 o posterior instalado localmente.
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:
Vaya a la carpeta de la aplicación:
cd msdocs-python-flask-webapp-quickstart
Cree un entorno virtual para la aplicación:
py -m venv .venv .venv\scripts\activate
Instale las dependencias:
pip install -r requirements.txt
Ejecute la aplicación:
flask run
Vaya a la aplicación de ejemplo en
http://localhost:5000
, en un explorador web.
¿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 comandoaz 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 comandoaz 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:
Cree un grupo de recursos predeterminado.
Cree un plan de App Service predeterminado.
Cree una aplicación con el nombre especificado.
Implemente desde un archivo ZIP todos los archivos del directorio de trabajo actual, con la automatización de compilación habilitada.
Almacene los parámetros localmente en el archivo .azure/config para que no tenga que especificarlos de nuevo al implementar posteriormente con
az webapp up
u otros comandosaz webapp
desde la carpeta del proyecto. Los valores almacenados en caché se usan automáticamente de forma predeterminada.
¿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.
- Implementación con la CLI de Azure
- Implementación mediante VS Code
- Implementación mediante un archivo ZIP
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.
¡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.