Hızlı Başlangıç: Python Durable Functions uygulaması oluşturma

Python'da durum bilgisi olan sunucusuz işlevler oluşturmak için Azure İşlevleri'nin bir özelliği olan Dayanıklı İşlevler'i kullanın. Dayanıklı İşlevler, düzenleme mantığınıza odaklanabilmeniz için durum kalıcılığını, denetim noktalarını ve yeniden başlatmaları otomatik olarak yönetir.

Bu hızlı başlangıçta Visual Studio Code'da bir Python Dayanıklı İşlevler uygulamasını yerel olarak oluşturup test edip Azure'a dağıtacaksınız. Orkestratör, etkinlik ve istemci işlevleriyle çağrıları birbirine zincirleyen ve toplu bir sonuç döndüren bir "merhaba dünya" orkestrasyonu oluşturursunuz. Kullandığınız araçlara Visual Studio Code Azure Functions uzantısı üzerinden ulaşabilirsiniz.

Azure'da çalışan tamamlanmış Python Dayanıklı İşlevler uygulamasının ekran görüntüsü.

Uyarı

Bu hızlı başlangıçta Python için dekoratör tabanlı v2 programlama modeli kullanılır. Bu model daha basit bir dosya yapısı sağlar ve v1 ile karşılaştırıldığında daha kod odaklıdır.

Önkoşullar

Bu hızlı başlangıcı tamamlamak için şunları yapmanız gerekir:

Azure hesabınız yoksa, başlamadan önce ücretsiz hesap oluşturun.

Yerel projenizi oluşturma

Bu bölümde, yerel bir Azure Functions projesi oluşturmak için Visual Studio Code kullanacaksınız.

  1. Visual Studio Code komut paletini açmak için F1'i seçin (veya Ctrl/Cmd+Shift+P'yi seçin). İstemde (>), girin ve Azure Functions: Yeni Proje Oluştur öğesini seçin.

    Azure İşlevleri için Visual Studio Code'da Yeni Proje Oluştur penceresinin ekran görüntüsü.

  2. Göz at seçeneğini seçin. Klasör Seç iletişim kutusunda, projeniz için kullanılacak klasöre gidin ve Seç'i seçin.

  3. İstemlerde aşağıdaki bilgileri sağlayın:

    Uyarı Eylem Açıklama
    İşlev uygulaması projeniz için bir dil seçin Python öğesini seçin. Yerel bir Python İşlevleri projesi oluşturur.
    Bir sürüm seçin Azure Functions v4 öğesini seçin. Bu seçeneği yalnızca Çekirdek Araçlar henüz yüklü olmadığında görürsünüz. Bu durumda, uygulamayı ilk kez çalıştırdığınızda Core Tools yüklenir.
    Python sürümü Python 3.7, Python 3.8, Python 3.9 veya Python 3.10 seçin. Visual Studio Code seçtiğiniz sürümü kullanarak bir sanal ortam oluşturur.
    Projenizin ilk işlevi için bir şablon seçin Şimdilik atla seçin.
    Projenizi nasıl açmak istediğinizi seçin Geçerli pencerede aç'ı seçin. Seçtiğiniz klasörde Visual Studio Code açar.

Visual Studio Code, proje oluşturmak için gerekliyse Azure Functions Core Tools'u yükler. Ayrıca bir klasörde bir işlev uygulaması projesi oluşturur. Bu proje host.json ve local.settings.json yapılandırma dosyalarını içerir.

Kök klasörde bir requirements.txt dosyası da oluşturulur. İşlev uygulamanızı çalıştırmak için gereken Python paketlerini belirtir.

PyPI'den azure-functions-durable yükleme

Projeyi oluşturduğunuzda, Azure Functions Visual Studio Code uzantısı otomatik olarak seçtiğiniz Python sürümüyle bir sanal ortam oluşturur. Ardından bir terminalde sanal ortamı etkinleştirmeniz ve Azure Functions ve Durable Functions için gereken bazı bağımlılıkları yüklemeniz gerekir.

  1. düzenleyicide requirements.txt açın ve içeriğini aşağıdaki kodla değiştirin:

    azure-functions
    azure-functions-durable
    
  2. Geçerli klasörde, düzenleyicinin tümleşik terminalini açın (Ctrl+Shift+').

  3. Tümleşik terminalde, işletim sisteminize bağlı olarak geçerli klasördeki sanal ortamı etkinleştirin.

    source .venv/bin/activate
    

Ardından sanal ortamın etkinleştirildiği tümleşik terminalde pip kullanarak tanımladığınız paketleri yükleyin.

python -m pip install -r requirements.txt

Uyarı

Azure-functions-durable v1.2.4 veya üzerini yüklemeniz gerekir.

İşlevlerinizi oluşturma

En temel Durable Functions uygulamasının üç işlevi vardır:

  • Orchestrator işlevi: Diğer işlevleri düzenleyen bir iş akışı.
  • Etkinlik işlevi: Orchestrator işlevi tarafından çağrılan, iş gerçekleştiren ve isteğe bağlı olarak bir değer döndüren işlev.
  • Client işlevi: Azure'da bir düzenleyici işlevi başlatan standart bir işlev. Bu örnekte HTTP ile tetiklenen bir işlev kullanılır.

Python Dayanıklı İşlevler uygulaması için örnek kod

Bu üç işlev türünü kullanarak temel bir Durable Functions uygulaması oluşturmak için function_app.py içeriğini aşağıdaki Python koduyla değiştirin:

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/{functionName}")
@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}"

Örnekteki her işlevin ve amacının açıklaması için aşağıdaki tabloyu gözden geçirin:

Yöntem Açıklama
hello_orchestrator İş akışını açıklayan orchestrator işlevi. Bu durumda düzenleme başlatılır, sırayla üç işlev çağrılır ve ardından listedeki üç işlevin de sıralı sonuçlarını döndürür.
hello İşlemleri düzenleyen işi gerçekleştiren etkinlik işlevi. İşlev, bağımsız değişken olarak geçirilen şehre basit bir selamlama döndürür.
http_start HTTP ile tetiklenen bir işlev, düzenlemenin bir örneğini başlatır ve bir check status yanıt döndürür.

Uyarı

Durable Functions ayrıca Python v2 programlama modelini blueprints destekler. Şemaları kullanmak için azure-functions-durableBlueprintclass kullanarak şema işlevlerinizi kaydedin. Sonuçta elde edilen şemayı her zamanki gibi kaydedebilirsiniz. Örnek olarak sample kullanabilirsiniz.

Azurite depolama öykünücüsü yapılandırma

İşlevi yerel olarak test etmek için Azure Storage öykünücüsü Azurite kullanabilirsiniz. local.settings.json dosyasında, değerini, bu örnekte olduğu gibi, AzureWebJobsStorage olarak ayarlayın.

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

Visual Studio Code'da Azurite uzantısını yüklemek ve çalıştırmaya başlamak için komut paletine Azurite: Başlat girin ve Enter'ı seçin.

Durable Functions uygulamanız için diğer depolama seçeneklerini kullanabilirsiniz. Depolama seçenekleri ve avantajları hakkında daha fazla bilgi için bkz. Durable Functions depolama sağlayıcıları.

İşlevi yerel olarak test etme

Azure Functions Temel Araçları, yerel geliştirme bilgisayarınızda bir Azure Functions projesi çalıştırma olanağı sağlar. Yüklü değilse, Visual Studio Code'da ilk kez bir işlev başlattığınızda bu araçları yüklemeniz istenir.

  1. İşlevinizi test etmek için etkinlik işlev kodunda hello bir kesme noktası ayarlayın. İşlev uygulaması projesini başlatmak için F5'i seçin veya komut paletinde Hata Ayıkla: Hata Ayıklamayı Başlat'ı seçin. Core Tools'tan alınan veri çıktısı, terminal panelinde görünür.

    Uyarı

    Hata ayıklama hakkında daha fazla bilgi için bakınız Durable Functions tanılama kılavuzu.

  2. Terminal panelinde HTTP ile tetiklenen işlevinizin URL uç noktasını kopyalayın.

    HTTP uç noktası URL'sini gösteren terminaldeki Azure İşlevleri yerel çıkışının ekran görüntüsü.

  3. URL uç noktasına HTTP POST isteği göndermek için tarayıcınızı veya bir HTTP test aracını kullanın.

    Son segmenti orchestrator işlevinin (hello_orchestrator) adıyla değiştirin. URL http://localhost:7071/api/orchestrators/hello_orchestrator'ye benzemelidir.

    Yanıt, HTTP işlevinin ilk sonucudur. Dayanıklı düzenlemenin başarıyla başladığını size bildiren bir mesaj verir. Henüz orkestrasyonun nihai sonucunu görüntülemez. Yanıt birkaç yararlı URL içerir. Şimdilik düzenlemenin durumunu sorgula.

  4. URL statusQueryGetUri değerini kopyalayın, Tarayıcınızın adres çubuğuna yapıştırın ve isteği yürütün. AYRıCA, GET isteğini vermek için HTTP test aracınızı kullanmaya devam edebilirsiniz.

    İstek, durum için orkestrasyon örneğini sorgular. İstancın tamamlandığını ve dayanıklı işlevin çıktılarını veya sonuçlarını içerdiğini görmelisiniz. Bu örneğe benzer:

    {
        "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. Hata ayıklamayı durdurmak için Visual Studio Code Shift+F5 tuşlarına basın.

İşlevin yerel bilgisayarınızda doğru şekilde çalıştığını doğruladıktan sonra, projeyi Azure yayımlamanın zamanı geldi.

Azure'a Giriş Yap

Azure kaynakları oluşturabilmeniz veya uygulamanızı yayımlayabilmeniz için önce Azure'da oturum açmanız gerekir.

  1. Henüz oturum açmadıysanız Activity çubuğunda Azure simgesini seçin. Ardından Kaynaklar altında Azure için oturum açın'ı seçin.

    Visual Studio Code'da Azure'da oturum açma penceresinin ekran görüntüsü.

    Zaten oturum açtıysanız ve mevcut aboneliklerinizi görebiliyorsanız sonraki bölüme gidin. Henüz bir Azure hesabınız yoksa > Azure Hesabı Oluştur'u seçin. Öğrenciler Azure Öğrenci Hesabı Oluştur seçebilir.

  2. Tarayıcıda sorulduğunda, Azure hesabınızı seçin ve Azure hesabı kimlik bilgilerinizi kullanarak oturum açın. Yeni bir hesap oluşturursanız, hesabınız oluşturulduktan sonra oturum açabilirsiniz.

  3. Başarıyla oturum açtığınızda yeni tarayıcı penceresini kapatabilirsiniz. Azure hesabınıza ait abonelikler yan çubukta görüntülenir.

Azure'de işlev uygulamasını oluşturma

Bu bölümde, Azure aboneliğinizdeki ilgili kaynaklarla birlikte Flex Consumption planında bir işlev uygulaması oluşturacaksınız. Kaynak oluşturma kararlarının çoğu sizin için varsayılan davranışlara göre yapılır. Oluşturulan kaynaklar üzerinde daha fazla denetim için bunun yerine gelişmiş seçeneklerle işlev uygulamanızı oluşturmanız gerekir.

  1. Visual Studio Code'da F1'i seçerek komut paletini açın. İstemde (>), girin ve Azure Functions: Azure'de İşlev Uygulaması Oluştur'u seçin.

  2. İstemlerde aşağıdaki bilgileri sağlayın:

    Uyarı Eylem
    Aboneliği seçin Kullanılacak Azure aboneliğini seçin. Kaynaklar altında yalnızca bir aboneliğiniz görünür olduğunda istem görünmez.
    Yeni bir işlev uygulaması adı girin URL yolunda geçerli olan genel olarak benzersiz bir ad girin. Girdiğiniz ad, Azure İşlevleri benzersiz olduğundan emin olmak için doğrulanır.
    Yeni kaynaklar için bir konum seçin Bir Azure bölgesi seçin. Daha iyi performans için size yakın bir bölge seçin. Yalnızca Flex Consumption planları tarafından desteklenen bölgeler görüntülenir.
    Çalışma zamanı yığını seçme Şu anda yerel olarak çalıştırdığınız dil sürümünü seçin.
    Kaynak kimlik doğrulama türünü seçin Varsayılan ana bilgisayar depolama hesabına bağlanmak için en güvenli seçenek olan Yönetilen kimlik'i seçin.

    Azure: Etkinlik Günlüğü panelinde Azure uzantısı, Azure'da oluşturulan tek tek kaynakların durumunu gösterir.

    Azure kaynak oluşturma günlüğünü gösteren ekran görüntüsü.

  3. İşlev uygulaması oluşturulduğunda, Azure aboneliğinizde aşağıdaki ilgili kaynaklar oluşturulur. Kaynaklar, işlev uygulamanız için girdiğiniz ada göre adlandırılır.

    • İlgili kaynaklar için mantıksal bir kapsayıcı olan kaynak grubu.
    • İşlev kodunuzu yürütmek için ortam sağlayan bir işlev uygulaması. İşlev uygulaması, aynı barındırma planı içindeki kaynakların daha kolay yönetilmesi, dağıtılması ve paylaşılması için işlevleri mantıksal birim olarak gruplandırmanıza olanak tanır.
    • İşlev uygulamanız için temel konağı tanımlayan bir Azure Uygulaması Hizmeti planı.
    • İşlev barındırıcısı tarafından işlev uygulamanızla ilgili durumu ve diğer bilgileri korumak için kullanılan standart Azure Depolama hesabı.
    • İşlev uygulamasına bağlı olan ve uygulamadaki işlevlerinizin kullanımını izleyen bir Application Insights örneği.
    • Kullanıcı tarafından atanan yönetilen kimlik, yeni varsayılan konak depolama hesabında Depolama Blob Verileri Katkıda Bulunanı rolüne eklenir.

    İşlev uygulamanız oluşturulduktan sonra bir bildirim görüntülenir ve dağıtım paketi uygulanır.

    Tip

    Varsayılan olarak, işlev uygulamanız için gereken Azure kaynakları, işlev uygulamanız için girdiğiniz ada göre oluşturulur. Varsayılan olarak, kaynaklar işlev uygulamasıyla aynı, yeni kaynak grubunda oluşturulur. İlişkili kaynakların adlarını özelleştirmek veya mevcut kaynakları yeniden kullanmak istiyorsanız, projeyi gelişmiş oluşturma seçenekleriyle yayımlayın.

Projeyi Azure dağıtma

Önemli

Mevcut bir işlev uygulamasına dağıtım yapıldığında Azure'da bu uygulamanın içeriğinin her zaman üzerine yazılacağını unutmayın.

  1. Komut paletine Azure Functions: İşlev Uygulamasına Dağıt yazın ve seçin.

  2. Yeni oluşturduğunuz işlev uygulamasını seçin. Önceki dağıtımların üzerine yazmanız istendiğinde, işlev kodunuzu yeni işlev uygulaması kaynağına dağıtmak için Dağıt'ı seçin.

  3. Dağıtım tamamlandığında, oluşturduğunuz Azure kaynakları da dahil olmak üzere oluşturma ve dağıtım sonuçlarını görüntülemek için View Output öğesini seçin. Bildirimi kaçırırsanız, yeniden görmek için sağ alt köşedeki zil simgesini seçin.

    Çıktıyı Görüntüle penceresinin ekran görüntüsü.

İşlevinizi Azure'de test edin

  1. Çıkış panelinden HTTP tetikleyicisinin URL'sini kopyalayın. HTTP ile tetiklenen işlevinizi çağıran URL şu biçimde olmalıdır:

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

  2. HTTP isteğinin yeni URL'sini tarayıcınızın adres çubuğuna yapıştırın. Yayımlanan uygulamayı kullandığınızda, yerel olarak test ettiğinizde elde ettiğiniz durum yanıtının aynısını almayı bekleyebilirsiniz.

Visual Studio Code kullanarak oluşturduğunuz ve yayımladığınız Python Durable Functions uygulaması kullanıma hazırdır.

Kaynakları temizle

Hızlı başlangıcı tamamlamak için oluşturduğunuz kaynaklara artık ihtiyacınız yoksa, Azure aboneliğinizde ilgili maliyetlerden kaçınmak için kaynak grubunu ve tüm ilgili kaynakları geri alın.