Partager via


Tutoriel : Appeler des fonctions de données utilisateur à partir d'une application console Python

Pour appeler les éléments de fonction de données utilisateur Fabric (aperçu) à partir d'une application console en Python, vous pouvez envoyer des requêtes HTTP au point de terminaison de fonction qui doit être exécuté. Dans ce guide de démarrage rapide, vous apprendrez à configurer une application Python à l’aide de Visual Studio Code.

Conditions préalables

Créez une application console pour appeler la fonction

  1. La fonction doit être accessible au public. Dans l'explorateur de fonctions, passez la souris sur le nom de la fonction et sélectionnez l'icône en forme de points de suspension (...) qui apparaît, puis sélectionnez Propriétés. Dans le volet Propriétés qui s’ouvre, activez Accès public. Vous devez également noter l’URL publique à utiliser dans votre application Python.

  2. Créez un nouveau dossier pour votre application Python, par exemple my-data-app. Ouvrez le dossier dans VS Code.

  3. Configurez l’environnement virtuel Python dans VS Code. Pour créer des environnements locaux dans VS Code, ouvrez la palette de commandes avec Ctrl+Maj+P, puis recherchez et sélectionnez la commande Python : Créer un environnement.

    • La commande présente une liste de types d’environnement et sélectionne Venv.
    • Sélectionnez la version Python de l'interpréteur Python 3.11.
  4. Exécutez la commande suivante pour activer l’environnement virtuel dans le terminal VS Code.

    venv\Scripts\activate.bat
    
  5. Ensuite, exécutez la commande pour installer les bibliothèques Python nécessaires à cet exemple.

    pip install azure-identity, requests 
    
  6. Créez un fichier app.py et utilisez le code pour appeler l’élément de fonctions de données utilisateur.

    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)
    
    

    Remarque

    L'exemple est uniquement à des fins de développement. Mettez à jour l’application pour utiliser l’authentification Microsoft Entra ID avant d’utiliser l’application pour un cas d’utilisation de production.

Appel d'une fonction à partir d'une application externe

Les fonctions peuvent être invoquées en émettant un appel REST vers l'URL du point de terminaison. Sélectionnez la fonction que vous souhaitez appeler dans l'Explorateur de fonctions et sélectionnez Copier l'URL de la fonction. Vous pouvez également activer ou désactiver la possibilité d’utiliser cette URL en externe à partir du menu Propriétés.

Capture d'écran montrant comment déboguer localement avec des points d'arrêt.

Ensuite, utilisez cette URL dans votre application pour appeler la fonction. Consultez Appeler les fonctions de données utilisateur à partir d'une application

Schéma de sortie

Lors de l'appel d'une fonction de données utilisateur à partir d'une application externe, le schéma de sortie aura le format suivant :

{
  "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*/
       }
     },
  ]
}

Les propriétés suivantes sont renvoyées :

  • functionName : Le nom de la fonction qui a été exécutée.
  • invocationId : L'ID d'appel pour l'exécution d'une fonction.
  • status : Le résultat de l'exécution de la fonction. Cela peut avoir l'une des valeurs suivantes : Succeeded, BadRequest, Failed, Timeout et ResponseTooLarge.
  • sortie : La valeur de sortie renvoyée par la fonction.
  • erreurs : Si des erreurs ont été capturées, cela renverra une liste de chaque erreur avec leur nom, leur message d'erreur et leurs propriétés d'erreur.

Codes de réponse

La fonction renverra les codes HTTP suivants à la suite de l'exécution.

Code de réponse Description
200 OK (Succès) La requête a été acceptée
403 (Interdit) La réponse était trop grande et l’invocation a échoué.
408 (Expiration du délai d’attente de la requête) La requête a échoué car l'exécution a pris plus de 200 secondes.
409 (Conflit) La requête a généré une exception lors de l'exécution.
400 (Requête incorrecte) La requête a échoué en raison de paramètres d'entrée non valides ou manquants.
500 (Erreur interne du serveur) La requête a échoué en raison d'une erreur interne.

Débogage et test

Déboguez l'application dans VS Code à l'aide du débogueur Python. Ajoutez des points d'arrêt si nécessaire pour déboguer d'éventuels problèmes. En savoir plus

Étapes suivantes