Aracılığıyla paylaş


Öğretici: Python konsol uygulamasından kullanıcı verileri işlevlerini çağırma

Python'daki bir konsol uygulamasından Doku Kullanıcısı veri işlevi öğelerini (Önizleme) çağırmak için, yürütülmesi gereken işlev uç noktasına HTTP istekleri gönderebilirsiniz. Bu hızlı başlangıçta, Visual Studio Code kullanarak python uygulaması ayarlamayı öğreneceksiniz.

Önkoşullar

  • Visual Studio Code’u yükleyin.
  • Yerel makinenize python 3.1 #C1 #B0 indirin.
  • Hesabınız yoksa ücretsiz #C1 #B0 bir Microsoft Fabric hesabı oluşturun.
  • Bir çalışma alanı oluştur.
  • Kullanıcı verileri işlevleri öğesi oluşturun ve yayımlayın. VS Code #C1 #B0 oluşturma veya portal #A3 nasıl oluşturulacağını #B2 ile ilgili bu makalelere bakın. Kullanıcı verileri işlevleri öğesinin çağrılmaya hazır olması için değişiklikleri yayımlayın.

İşlevi çağırmak için bir konsol uygulaması oluşturma

  1. İşlev genel olarak erişilebilir olmalıdır. İşlevler gezgininde, işlevin adının üzerine gelin ve görüntülenen üç nokta simgesini (...) ve ardından özellikler #A1 #B0 seçin. Açılan Özellikler bölmesinde genel erişim #A1 #B0 etkinleştirin. Ayrıca Python uygulamanızda kullanmak üzere #B0 Genel URL #C1 not edin.

  2. Python uygulamanız için yeni bir klasör oluşturun; örneğin my-data-app #A1 #B0. KLASÖRÜ VS Code'da açın.

  3. VS Code'da Python sanal ortamını ayarlayın. VS Code'da yerel ortamlar oluşturmak için #B2 Ctrl+Shift+P #A3 ile #B0 Komut paleti #C1 açın, ardından Python: Ortam Oluştur komutunu arayın ve seçin.

    • komutu ortam türlerinin listesini sunar ve Venv #A1 #B0 seçer.
    • python 3.11 #A1 #B0 Python yorumlayıcı sürümünü seçin.
  4. VS Code terminalinde sanal ortamı etkinleştirmek için aşağıdaki komutu çalıştırın.

    venv\Scripts\activate.bat
    
  5. Ardından komutunu çalıştırarak bu örnek için gereken Python kitaplıklarını yükleyin.

    pip install azure-identity, requests 
    
  6. bir #D0 dosyası oluşturun ve kullanıcı verileri işlevleri öğesini çağırmak için kodu kullanın.

    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)
    
    

    Uyarı

    Örnek, yalnızca #A1 #B0 geliştirme amaçlarına yöneliktir. Uygulamayı bir üretim kullanım örneği için kullanmadan önce Microsoft Entra Id kimlik doğrulamasını kullanacak şekilde güncelleştirin.

Dış uygulamadan işlev çağırma

İşlevler, uç nokta URL'sine rest çağrısı düzenlenerek çağrılabilir. #B0 İşlevler gezgini #C1 çağırmak istediğiniz işlevi seçin ve İşlev URL'sini kopyala #A3 #B2 seçin. Ayrıca, #B0 Özellikler #C1 menüsünden bu URL'yi harici olarak kullanma özelliğini açabilir veya kapatabilirsiniz.

kesme noktalarıyla yerel olarak hata ayıklamayı gösteren ekran görüntüsü #B0 #A1 #A2 #A3. #A4 #A5 #A6 #C7

Ardından, işlevi çağırmak için uygulamanızda bu URL'yi kullanın. Bkz. #B0 Uygulamadan kullanıcı verileri işlevlerini çağırma #C1

Çıkış şeması

Dış bir uygulamadan Kullanıcı Verileri İşlevi çağrılırken, çıkış şeması aşağıdaki biçime sahip olur:

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

Aşağıdaki özellikler döndürülür:

  • #B0 functionName #A1: Yürütülen işlevin adı.
  • #B0 invocationId #A1: İşlevin yürütülmesi için çağrı kimliği.
  • #B0 durum #A1: İşlevin yürütülmesinin sonucu. Bu, şu değerlerden herhangi birine sahip olabilir: #B0 , #B1 , #B2, #D3 ve #B4.
  • #B0 çıktı #A1: İşlev tarafından döndürülen çıkış değeri.
  • #B0 hataları #A1: Herhangi bir hata yakalanırsa, bu, her hatanın adını, hata iletisini ve hata özelliklerini içeren bir listesini döndürür.

Yanıt kodları

İşlev, yürütmenin bir sonucu olarak aşağıdaki HTTP kodlarını döndürür.

#B0 Yanıt kodu #C1 Açıklama
200 Tamam (Başarılı) İstek başarılı oldu
403 (Yasak) Yanıt çok büyük ve çağrı başarısız oldu.
408 (İstek Zaman Aşımı) Yürütmenin 200 saniyeden uzun sürmesi nedeniyle istek başarısız oldu.
409 (Çakışma) İstek yürütme sırasında bir özel durum oluşturdu.
400 (Hatalı İstek) İstek geçersiz veya eksik giriş parametreleri nedeniyle başarısız oldu.
500 (İç Sunucu Hatası) İstek bir iç hata nedeniyle başarısız oldu.

Hata ayıklama ve test etme

Python hata ayıklayıcısını kullanarak VS Code'da uygulamada hata ayıklama. Herhangi bir sorun varsa hata ayıklamak için gerekirse kesme noktaları ekleyin. Daha fazla bilgi edinin

Sonraki adımlar

  • #B0 Kullanıcı verileri işlevleri oluşturma #C1
  • #B0 Kullanıcı veri işlevleri örnekleri #C1