Compartir a través de


Tutorial: Invocación de funciones de datos de usuario desde una aplicación de consola de Python

Para invocar las funciones de datos de usuario de Fabric (versión preliminar) desde una aplicación de consola en Python, puede enviar solicitudes HTTP al extremo donde se ejecuta la función. En este inicio rápido, aprenderá a configurar una aplicación de Python mediante Visual Studio Code.

Prerrequisitos

Creación de una aplicación de consola para invocar la función

  1. La función debe ser accesible públicamente. En el Explorador de Funciones, mantenga el puntero sobre el nombre de la función y seleccione el icono de puntos suspensivos (...) que aparece y, a continuación, seleccione Propiedades. En el panel Propiedades que se abre, habilite el acceso público. También debe tomar nota de la dirección URL pública que se va a usar en la aplicación Python.

  2. Cree una nueva carpeta para la aplicación de Python, por ejemplo my-data-app. Abra la carpeta en VS Code.

  3. Configure el entorno virtual de Python en VS Code. Para crear entornos locales en VS Code, abra la paleta de comandos con Ctrl+Mayús+P y, a continuación, busque y seleccione el comando Python: crear entorno.

    • El comando presenta una lista de tipos de entorno y selecciona Venv.
    • Seleccione la versión del intérprete de Python Python 3.11.
  4. Ejecute el siguiente comando para activar el entorno virtual en el terminal de VS Code.

    venv\Scripts\activate.bat
    
  5. A continuación, ejecute el comando para instalar las bibliotecas de Python necesarias para este ejemplo.

    pip install azure-identity, requests 
    
  6. Cree un archivo app.py y use el código para invocar el elemento de funciones de datos de usuario.

    from azure.identity import InteractiveBrowserCredential
    import requests
    import json
    
    # Acquire a token
    # DO NOT USE IN PRODUCTION.
    # Below code to acquire token is to test the GraphQL endpoint and is for the purpose of development only.
    # For production, always register an application in a Microsoft Entra ID tenant and use the appropriate client_id and scopes.
    # https://learn.microsoft.com/fabric/data-engineering/connect-apps-api-graphql#create-a-microsoft-entra-app
    
    app = InteractiveBrowserCredential()
    scp = 'https://analysis.windows.net/powerbi/api/user_impersonation'
    result = app.get_token(scp)
    
    if not result.token:
        print('Error:', "Could not get access token")
    
    # Prepare headers
    headers = {
        'Authorization': f'Bearer {result.token}',
        'Content-Type': 'application/json'
    }
    
    FUNCTION_URL = '<REPLACE WITH USER DATA FUNCTION URL>'
    
    # Prepare the request data
    data = '{"name": "John"}' # JSON payload to send to the Azure Function
    headers = {
        #  "Authorization": f"Bearer {access_token}",
        "Content-Type": "application/json"
            }
    
    try:   
        # Call the user data function public URL 
        response = requests.post(FUNCTION_URL, json=data, headers=headers)
        response.raise_for_status()
        print(json.dumps(response.json()))
    except Exception as e:
        print({"error": str(e)}, 500)
    
    if __name__ == "__main__":
        app.run(debug=True)
    
    

    Nota:

    El ejemplo es solo para fines de desarrollo. Actualice la aplicación para usar la autenticación de Microsoft Entra ID antes de usar la aplicación para un caso de uso de producción.

Invocación de una función desde una aplicación externa

Las funciones se pueden invocar mediante la emisión de una llamada REST a la dirección URL del punto de conexión. Seleccione la función que desea invocar en el Explorador de Functions y seleccione Copiar dirección URL de la función. También puede activar o desactivar la capacidad de usar esta dirección URL externamente desde el menú Propiedades.

Recorte de pantalla en el que se muestra cómo depurar localmente con puntos de interrupción.

A continuación, use esta dirección URL en la aplicación para invocar la función. Consulte Invocar funciones de datos de usuario desde una aplicación

Esquema de salida

Al invocar una función de datos de usuario desde una aplicación externa, el esquema de salida tendrá el formato siguiente:

{
  "functionName": "hello_fabric",
  "invocationId": "1234567890", 
  "status": "Succeeded | BadRequest | Failed | Timeout | ResponseTooLarge",
  "output": /*shows the result of the function dependeing on the output type*/,
  "errors": [
     {
       "name": "Error name",
       "message": "Error message",
       "properties": {
          /*Key value pairs custom to error*/
       }
     },
  ]
}

Se devuelven las siguientes propiedades:

  • functionName: nombre de la función que se ejecutó.
  • invocationId: identificador de invocación para la ejecución de una función.
  • estado: resultado de la ejecución de la función. Esto puede tener cualquiera de los siguientes valores: Succeeded, BadRequest, FailedTimeout y ResponseTooLarge.
  • salida: el valor de salida devuelto por la función.
  • errores: si se capturaron errores, devolverá una lista de cada error con su nombre, mensaje de error y propiedades de error.

Códigos de respuesta

La función devolverá los siguientes códigos HTTP como resultado de la ejecución.

Código de respuesta Descripción
200 OK (Correcto) La solicitud fue exitosa
403 (Prohibido) La respuesta era demasiado grande y se produjo un error en la invocación.
408 (Tiempo de espera de solicitud agotado) Error en la solicitud debido a que la ejecución tarda más de 200 segundos.
409 (Conflicto) La solicitud produjo una excepción durante la ejecución.
400 (Solicitud incorrecta) Se produjo un error en la solicitud debido a parámetros de entrada no válidos o que faltan.
500 (error interno del servidor) Se produjo un error en la solicitud debido a un error interno.

Depuración y pruebas

Depurar la aplicación en VS Code mediante el depurador de Python. Agregue puntos de interrupción si es necesario para depurar si hay algún problema. Más información

Pasos siguientes