Compartir vía


Inicio rápido: Creación de una aplicación de Python Durable Functions

Use Durable Functions, una característica de Azure Functions, para escribir funciones con estado en un entorno sin servidor. Para instalar Durable Functions, instale la Extensión de Azure Functions en Visual Studio Code. La extensión administra el estado, los puntos de control y los reinicios en la aplicación.

En este inicio rápido, usará la extensión Durable Functions en Visual Studio Code para crear y probar localmente una aplicación durable Functions "hola mundo" en Azure Functions. La aplicación Durable Functions organiza y encadena llamadas a otras funciones. A continuación, publicará el código de función en Azure. Las herramientas que usa están disponibles a través de la extensión de Visual Studio Code.

Captura de pantalla de la aplicación Durable Functions en ejecución en Azure.

Nota:

En este inicio rápido se usa el modelo de programación v2 basado en decoradores para Python. Este modelo proporciona una estructura de archivos más sencilla y está más centrada en el código en comparación con la versión 1.

Requisitos previos

Para completar este inicio rápido necesita instalar:

Si no tiene una cuenta de Azure, cree una cuenta gratuita antes de comenzar.

Creación del proyecto local

En esta sección se usa Visual Studio Code para crear un proyecto local en Azure Functions.

  1. En Visual Studio Code, seleccione F1 (o presione Ctrl/Cmd+Mayús+P) para abrir la paleta de comandos. En el símbolo del sistema (>), escriba y seleccione Azure Functions: Crear nuevo proyecto.

    Captura de pantalla de la creación de una ventana de funciones.

  2. Seleccione Examinar. En el cuadro de diálogo Seleccionar carpeta , vaya a una carpeta que se usará para el proyecto y, a continuación, elija Seleccionar.

  3. Escriba la siguiente información cuando se le indique:

    Pronto Acción Descripción
    Seleccionar un lenguaje para el proyecto de aplicación de funciones Seleccione Python. Crea un proyecto local de Funciones de Python.
    Seleccionar una versión Seleccione Azure Functions v4. Solo verá esta opción cuando Core Tools aún no está instalado. En este caso, Core Tools se instala la primera vez que ejecuta la aplicación.
    Versión de Python Seleccione Python 3.7, Python 3.8, Python 3.9o Python 3.10. Visual Studio Code crea un entorno virtual mediante la versión que seleccione.
    Seleccionar una plantilla para la primera función de su proyecto Seleccione Omitir por ahora.
    Seleccionar cómo desea que se abra el proyecto Seleccione Abrir en la ventana actual. Abre Visual Studio Code en la carpeta seleccionada.

Visual Studio Code instala Azure Functions Core Tools si es necesario crear un proyecto. También crea el proyecto de una aplicación de funciones en una carpeta. Este proyecto contiene los archivos de configuración host.json y local.settings.json.

También se creará un archivo requirements.txt en la carpeta raíz. Este sirve para especificar los paquetes de Python que se necesitan para ejecutar la aplicación de funciones.

Instalación de azure-functions-durable desde PyPI

Al crear el proyecto, la extensión de Visual Studio Code de Azure Functions crea automáticamente un entorno virtual con la versión de Python seleccionada. Deberá activar este entorno virtual en un terminal e instalar algunas dependencias que necesitan las extensiones Azure Functions y Durable Functions.

  1. Abra el archivo requirements.txt en el editor y cambie su contenido por el siguiente código:

    azure-functions
    azure-functions-durable
    
  2. En la carpeta actual, abra el terminal integrado del editor (Ctrl+Mayús+').

  3. En el terminal integrado, active el entorno virtual en la carpeta actual, en función del sistema operativo.

    source .venv/bin/activate
    

A continuación, en el terminal integrado donde se activa el entorno virtual, use pip para instalar los paquetes definidos.

python -m pip install -r requirements.txt

Nota:

Debe instalar azure-functions-durable v1.2.4 o superior.

Creación de las funciones

La aplicación Durable Functions más básica tiene tres funciones:

  • Función de Orchestrator: flujo de trabajo que organiza otras funciones.
  • Función Actividad: una función a la que llama la función de orquestador, realiza el trabajo y, opcionalmente, devuelve un valor.
  • Función cliente: una función normal en Azure que inicia una función de orquestador. En este ejemplo se usa una función desencadenada por HTTP.

Código de ejemplo

Para crear una aplicación básica de Durable Functions mediante estos tres tipos de función, reemplace el contenido de function_app.py por el siguiente código de Python:

import azure.functions as func
import azure.durable_functions as df

myApp = df.DFApp(http_auth_level=func.AuthLevel.ANONYMOUS)

# An HTTP-triggered function with a Durable Functions client binding
@myApp.route(route="orchestrators/hello_orchestrator")
@myApp.durable_client_input(client_name="client")
async def http_start(req: func.HttpRequest, client):
    function_name = req.route_params.get('functionName')
    instance_id = await client.start_new(function_name)
    response = client.create_check_status_response(req, instance_id)
    return response

# Orchestrator
@myApp.orchestration_trigger(context_name="context")
def hello_orchestrator(context):
    result1 = yield context.call_activity("hello", "Seattle")
    result2 = yield context.call_activity("hello", "Tokyo")
    result3 = yield context.call_activity("hello", "London")

    return [result1, result2, result3]

# Activity
@myApp.activity_trigger(input_name="city")
def hello(city: str):
    return f"Hello {city}"

Revise la tabla siguiente para obtener una explicación de cada función y su propósito en el ejemplo:

Método Descripción
hello_orchestrator La función de orquestador describe el flujo de trabajo. En este caso, la orquestación se inicia, invoca tres funciones en una secuencia y, a continuación, devuelve los resultados ordenados de las tres funciones de una lista.
hello Función de actividad, que realiza el trabajo orquestado. La función devuelve un simple saludo a la ciudad pasada como argumento.
http_start Una función desencadenada por HTTP que inicia una instancia de la orquestación y devuelve una respuesta check status.

Nota:

Durable Functions también admite planos técnicos del modelo de programación de Python v2. Para usar planos técnicos, registre las funciones de plano técnico medianteazure-functions-durableBlueprintclase. Puede registrar el plano técnico resultante como de costumbre. Puede usar nuestra muestra como ejemplo.

Configuración del emulador de almacenamiento

Puede usar Azurite, un emulador de Azure Storage, para probar la función localmente. En local.settings.json, establezca el valor de AzureWebJobsStorage en UseDevelopmentStorage=true como en este ejemplo:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "python"
  }
}

Para instalar e iniciar la ejecución de la extensión Azurite en Visual Studio Code, en la paleta de comandos, escriba Azurite: Iniciar y seleccione Entrar.

Puede usar otras opciones de almacenamiento para la aplicación de Durable Functions. Para obtener más información sobre las opciones y ventajas de almacenamiento, consulte Proveedores de almacenamiento de Durable Functions.

Prueba local de la función

Azure Functions Core Tools ofrece la capacidad de ejecutar un proyecto de Azure Functions en el equipo de desarrollo local. Si no está instalado, se le pedirá que instale estas herramientas la primera vez que inicie una función en Visual Studio Code.

  1. Para probar la función, establezca un punto de interrupción en el código de la función de actividad de hello. Seleccione F5 o seleccione Depurar: Iniciar depuración en la paleta de comandos para iniciar el proyecto de aplicación de funciones. La salida de Core Tools aparece en el panel del terminal.

    Nota:

    Para obtener más información sobre la depuración, consulte Diagnósticos de Durable Functions.

  2. En el panel terminal, copie el punto de conexión de la dirección URL de la función desencadenada por HTTP.

    Captura de pantalla de salida local de Azure.

  3. Use su navegador o una herramienta de prueba HTTP para enviar una solicitud HTTP POST al punto de conexión de la dirección URL.

    Reemplace el último segmento por el nombre de la función de orquestador (hello_orchestrator). La dirección URL debe ser similar a http://localhost:7071/api/orchestrators/hello_orchestrator.

    La respuesta es el resultado inicial de la función HTTP. Le permite saber que la orquestación duradera se ha iniciado correctamente. Todavía no muestra el resultado final de la orquestación. La respuesta incluye algunas direcciones URL útiles. Por ahora, consulte el estado de la orquestación.

  4. Copie el valor de dirección URL de statusQueryGetUri, péguelo en la barra de direcciones del explorador y ejecute la solicitud. También puede seguir usando la herramienta de prueba HTTP para emitir la solicitud GET.

    La solicitud consultará la instancia de orquestación sobre el estado. Debería ver que la instancia finalizó y que incluye las salidas o los resultados de la función durable. Tiene un aspecto similar a este ejemplo:

    {
        "name": "hello_orchestrator",
        "instanceId": "9a528a9e926f4b46b7d3deaa134b7e8a",
        "runtimeStatus": "Completed",
        "input": null,
        "customStatus": null,
        "output": [
            "Hello Tokyo!",
            "Hello Seattle!",
            "Hello London!"
        ],
        "createdTime": "2020-03-18T21:54:49Z",
        "lastUpdatedTime": "2020-03-18T21:54:54Z"
    }
    
  5. Para detener la depuración, en Visual Studio Code, seleccione Mayús+F5.

Después de comprobar que la función se ejecuta correctamente en el equipo local, es el momento de publicar el proyecto en Azure.

Inicio de sesión en Azure

Para poder crear recursos de Azure o publicar la aplicación, debe iniciar sesión en Azure.

  1. Si aún no ha iniciado sesión, en la barra de actividad, seleccione el icono de Azure. A continuación, en Recursos, seleccione Iniciar sesión en Azure.

    Captura de pantalla de la ventana de inicio de sesión en Azure en Visual Studio Code.

    Si ya ha iniciado sesión y puede ver las suscripciones existentes, vaya a la siguiente sección. Si aún no tiene una cuenta de Azure, seleccione Crear una cuenta de Azure. Los alumnos pueden seleccionar Crear una cuenta de Azure for Students.

  2. Cuando se le solicite en el explorador, seleccione su cuenta de Azure e inicie sesión con las credenciales de la cuenta de Azure. Si opta por crear una cuenta, podrá iniciar sesión una vez que haya completado el proceso de creación.

  3. Después de iniciar sesión correctamente, puede cerrar la nueva ventana del explorador. Las suscripciones que pertenecen a su cuenta de Azure se muestran en la barra lateral.

Cree la aplicación de funciones en Azure

Durante el transcurso de esta sección, podrá crear una aplicación de funciones y los recursos relacionados con esta en la suscripción de Azure. Muchas de las decisiones de creación de recursos se toman en función de los comportamientos predeterminados. Para obtener más control sobre los recursos creados, en su lugar debe crear la aplicación de funciones con opciones avanzadas.

  1. En Visual Studio Code, seleccione F1 para abrir la paleta de comandos. En el símbolo del sistema (>), escriba y seleccione Azure Functions: Crear aplicación de funciones en Azure.

  2. Escriba la siguiente información cuando se le indique:

    Pronto Acción
    Seleccionar suscripción Seleccione la suscripción de Azure que se va a usar. El símbolo del sistema no aparece cuando solo tiene una suscripción visible en Recursos.
    Escribir un nombre único global para la aplicación de funciones Escriba un nombre válido en una ruta de acceso de dirección URL. El nombre que escriba se valida para asegurarse de que es único en Azure Functions.
    Seleccione una pila en tiempo de ejecución Seleccione la versión de idioma que se ejecuta actualmente localmente.
    Seleccionar una ubicación para los nuevos recursos Seleccionar una región de Azure. Para mejorar el rendimiento, seleccione una región cerca de usted.

    En el panel Azure: Registro de actividad, la extensión de Azure muestra el estado de los recursos individuales a medida que se crean en Azure.

    Captura de pantalla que muestra el registro de creación de recursos de Azure.

  3. Cuando se crea la aplicación de funciones, se crean los siguientes recursos relacionados en la suscripción de Azure. Los recursos se denominan en función del nombre especificado para la aplicación de funciones.

    • Un grupo de recursos, que es un contenedor lógico de recursos relacionados.
    • Una cuenta de Azure Storage estándar, que mantiene información de estado y de otro tipo sobre los proyectos.
    • Una aplicación de funciones, que proporciona el entorno para ejecutar el código de función. Una aplicación de funciones permite agrupar funciones como una unidad lógica para facilitar la administración, la implementación y el uso compartido de recursos en el mismo plan de hospedaje.
    • Un plan de Azure App Service, que define el host subyacente para la aplicación de funciones.
    • Una instancia de Application Insights conectada a la aplicación de funciones y que realiza un seguimiento del uso de las funciones en la aplicación.

    Una vez que se haya creado la aplicación de función se mostrará una notificación y se aplicará el paquete de implementación.

    Sugerencia

    De forma predeterminada, los recursos de Azure necesarios para la aplicación de funciones se crean según el nombre que escriba para la aplicación de funciones. De manera predeterminada, los recursos se crean con la aplicación de funciones en el mismo grupo de recursos nuevo. Si desea personalizar los nombres de los recursos asociados o reutilizar los recursos existentes, publique el proyecto con opciones de creación avanzadas.

Implementar el proyecto en Azure

Importante

Los procesos de implementación en aplicaciones de funciones existentes siempre sobrescriben el contenido de esas aplicaciones en Azure.

  1. En la paleta de comandos, escriba y seleccione Azure Functions: implementar la aplicación de funciones.

  2. Seleccione la aplicación de funciones que acaba de crear. Cuando se le solicite sobrescribir las implementaciones anteriores, seleccione Implementar para implementar el código de función en el nuevo recurso de aplicación de funciones.

  3. Cuando se complete la implementación, seleccione Ver la salida para ver los resultados de creación e implementación, incluidos los recursos de Azure que creó. Si se pierde la notificación, seleccione el icono de campana en la esquina inferior derecha para verlo de nuevo.

    Captura de pantalla de la vista de la ventana de salida.

Prueba de una función en Azure

  1. Copie la dirección URL del desencadenador HTTP en el panel de salida. La dirección URL que llama a la función desencadenada por HTTP debe estar en este formato:

    https://<functionappname>.azurewebsites.net/api/orchestrators/hello_orchestrator

  2. Pegue la nueva dirección URL de la solicitud HTTP en la barra de direcciones del explorador. Al usar la aplicación publicada, puede esperar obtener la misma respuesta de estado que obtuvo al probar localmente.

La aplicación Python Durable Functions que creó y publicó mediante Visual Studio Code está lista para usarse.

Limpieza de recursos

Si ya no necesita los recursos que creó para completar el inicio rápido, para evitar costos relacionados en la suscripción de Azure, Eliminación del grupo de recursos y todos los recursos relacionados.