Membuat fungsi tahan lama pertama Anda di Python

Durable Functions adalah ekstensi Azure Functions yang memungkinkan Anda menulis fungsi stateful di lingkungan tanpa server. Ekstensi ini mengelola status, titik pemeriksaan, dan menghidupkan ulang untuk Anda.

Dalam artikel ini, Anda mempelajari cara menggunakan ekstensi Visual Studio Code Azure Functions untuk membuat dan menguji fungsi tahan lama "halo dunia" secara lokal. Fungsi ini akan mengatur dan menyatukan panggilan ke fungsi lain. Anda kemudian dapat menerbitkan kode fungsi ke Azure.

Cuplikan layar fungsi tahan lama yang berjalan di Azure.

Prasyarat

Untuk menyelesaikan tutorial ini:

Jika Anda tidak memiliki Langganan Azure, buat Akun gratis Azure sebelum memulai.

Membuat proyek lokal Anda

Di bagian ini, gunakan Visual Studio Code untuk membuat proyek Azure Functions lokal.

  1. Di Visual Studio Code, tekan F1 (atau Ctrl/Cmd+Shift+P) untuk membuka palet perintah. Di palet perintah, cari dan pilih Azure Functions: Create New Project....

    Cuplikan layar jendela Membuat fungsi.

  2. Pilih lokasi folder kosong untuk proyek Anda dan pilihPilih.

  1. Ikuti perintahnya dan berikan informasi berikut:

    Prompt Nilai Deskripsi
    Pilih bahasa untuk proyek aplikasi fungsi Anda Python Buat proyek Python Functions lokal.
    Pilih versi Azure Functions v4 Anda hanya melihat opsi ini saat Core Tools belum dipasang. Dalam hal ini, Core Tools diinstal saat Anda menjalankan aplikasi pertama kalinya.
    Versi Python Python 3.7, 3.8, 3.9, atau 3.10 Visual Studio Code akan membuat lingkungan virtual dengan versi yang Anda pilih.
    Pilih templat untuk fungsi pertama proyek Anda Lewati untuk sekarang
    Pilih bagaimana Anda ingin membuka proyek Anda Buka di jendela saat ini Buka kembali Visual Studio Code di folder yang Anda pilih.
  1. Ikuti perintahnya dan berikan informasi berikut:

    Prompt Nilai Deskripsi
    Pilih bahasa Python (Model Pemrograman V2) Buat proyek Python Functions lokal menggunakan model pemrograman V2.
    Pilih versi Azure Functions v4 Anda hanya melihat opsi ini saat Core Tools belum dipasang. Dalam hal ini, Core Tools diinstal saat Anda menjalankan aplikasi pertama kalinya.
    Versi Python Python 3.7, 3.8, 3.9, atau 3.10 Visual Studio Code akan membuat lingkungan virtual dengan versi yang Anda pilih.
    Pilih bagaimana Anda ingin membuka proyek Anda Buka di jendela saat ini Buka kembali Visual Studio Code di folder yang Anda pilih.

Visual Studio Code menginstal Azure Functions Core Tools jika diperlukan. Selain itu membuat proyek aplikasi fungsi dalam folder. Proyek ini berisi file konfigurasihost.jsondanlocal.settings.json.

File requirements.txt juga dibuat di folder akar. File ini menentukan paket Python yang diperlukan untuk menjalankan aplikasi fungsi Anda.

Pasang azure-functions-durable dari PyPI

Saat membuat proyek, ekstensi Azure Functions Visual Studio Code secara otomatis membuat lingkungan virtual dengan versi Python pilihan Anda. Anda kemudian harus mengaktifkan lingkungan virtual di terminal dan menginstal beberapa dependensi yang diperlukan oleh Azure Functions dan Durable Functions.

  1. Bukarequirements.txtdi editor dan ubah kontennya menjadi kode berikut:

    azure-functions
    azure-functions-durable
    
  2. Buka terminal terintegrasi editor di folder saat ini (Ctrl+Shift+`).

  3. Di terminal terintegrasi, aktifkan lingkungan virtual di folder saat ini, sesuai dengan sistem operasi Anda:

    source .venv/bin/activate
    
  4. Di terminal terpadu tempat lingkungan virtual diaktifkan, gunakan pip untuk menginstal paket yang sudah Anda tentukan.

    python -m pip install -r requirements.txt
    

Membuat fungsi Anda

Aplikasi Durable Functions dasar berisi tiga fungsi:

  • Fungsi orkestrator: Menjelaskan alur kerja yang mengatur fungsi lain.
  • Fungsi aktivitas: Dipanggil oleh fungsi orkestrator, melakukan pekerjaan, dan secara opsional mengembalikan nilai.
  • Fungsi klien: Fungsi Azure reguler yang memulai fungsi orkestrator. Contoh ini menggunakan fungsi yang dipicu HTTP.

Fungsi orkestrator

Gunakan templat untuk membuat kode fungsi tahan lama di proyek Anda.

  1. Di palet perintah, cari dan pilih Azure Functions: Create Function....

  2. Ikuti perintahnya dan berikan informasi berikut:

    Prompt Nilai Deskripsi
    Pilih templat untuk fungsi Anda Orkestrator Durable Functions Membuat orkestrasi Fungsi Tahan Lama
    Menyediakan nama fungsi HelloOrchestrator Nama fungsi tahan lama Anda

Anda telah menambahkan orkestrator untuk mengoordinasikan fungsi aktivitas. Buka HelloOrchestrator/__init__.py untuk melihat fungsi orchestrator. Setiap panggilan kecontext.call_activityakan memanggil fungsi aktivitas bernama Hello.

Selanjutnya, tambahkan fungsi aktivitas Hello yang direferensikan.

Fungsi aktivitas

  1. Di palet perintah, cari dan pilih Azure Functions: Create Function....

  2. Ikuti perintahnya dan berikan informasi berikut:

    Prompt Nilai Deskripsi
    Pilih templat untuk fungsi Anda Aktivitas Durable Functions Membuat fungsi aktivitas
    Menyediakan nama fungsi Halo Nama fungsi aktivitas Anda

Tambahkan fungsi aktivitas Hello yang dipanggil oleh orkestrator. Buka Hello/__init__.py untuk melihat bahwa nama dibutuhkan sebagai input dan membalas pesan. Fungsi aktivitas adalah tempat Anda akan melakukan tindakan seperti melakukan panggilan database atau melakukan komputasi.

Terakhir, Anda akan menambahkan fungsi terpicu HTTP yang memulai orkestrasi.

Fungsi klien (starter HTTP)

  1. Di palet perintah, cari dan pilih Azure Functions: Create Function....

  2. Ikuti perintahnya dan berikan informasi berikut:

    Prompt Nilai Deskripsi
    Pilih templat untuk fungsi Anda Starter HTTP Durable Functions Membuat fungsi starter HTTP
    Menyediakan nama fungsi DurableFunctionsHttpStart Nama fungsi klien Anda
    Tingkat otorisasi Anonim Untuk tujuan demo, izinkan fungsi dipanggil tanpa autentikasi

Anda telah menambahkan fungsi terpicu HTTP yang memulai orkestrasi. Buka untuk melihat bahwa DurableFunctionsHttpStart/__init__.py menggunakan client.start_new untuk memulai orkestrasi baru. Kemudian menggunakanclient.create_check_status_responseuntuk mengembalikan respons HTTP yang berisi URL yang dapat digunakan untuk memantau dan mengelola orkestrasi baru.

Kini Anda memiliki aplikasi Durable Functions yang dapat dijalankan secara lokal dan disebarkan ke Azure.

Persyaratan

Model pemrograman Python versi 2 memerlukan versi minimum berikut:

Mengaktifkan model pemrograman v2

Pengaturan aplikasi berikut diperlukan untuk menjalankan model pemrograman v2:

  • Nama: AzureWebJobsFeatureFlags
  • Nilai: EnableWorkerIndexing

Jika Anda menjalankan secara lokal menggunakan Azure Functions Core Tools, Anda harus menambahkan pengaturan ini ke file Anda local.settings.json . Jika Anda menjalankan di Azure, ikuti langkah-langkah berikut dengan alat pilihan Anda:

Ganti <FUNCTION_APP_NAME> dan <RESOURCE_GROUP_NAME> dengan nama aplikasi fungsi dan grup sumber daya Anda.

az functionapp config appsettings set --name <FUNCTION_APP_NAME> --resource-group <RESOURCE_GROUP_NAME> --settings AzureWebJobsFeatureFlags=EnableWorkerIndexing

Untuk membuat aplikasi Durable Functions dasar menggunakan 3 jenis fungsi ini, ganti konten function_app.py dengan kode Python berikut.

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}"

Tinjau tabel di bawah ini untuk penjelasan tentang setiap fungsi dan tujuannya dalam sampel.

Metode Deskripsi
hello_orchestrator Fungsi orkestrator, yang menjelaskan alur kerja. Dalam hal ini, orkestrasi dimulai, memanggil tiga fungsi secara berurutan, dan mengembalikan hasil yang diurutkan dari semua 3 fungsi dalam daftar.
hello Fungsi aktivitas, yang melakukan pekerjaan yang diorkestrasi. Fungsi mengembalikan salam sederhana ke kota yang diteruskan sebagai argumen.
http_start Fungsi yang dipicu HTTPyang memulai instans orkestrasi dan mengembalikan respons status pemeriksaan.

Catatan

Durable Functions juga mendukung cetak biru Python V2. Untuk menggunakannya, Anda harus mendaftarkan fungsi cetak biru Anda menggunakan kelas , seperti yang azure-functions-durableBlueprint ditunjukkan di sini. Cetak biru yang dihasilkan kemudian dapat didaftarkan seperti biasa. Lihat contoh kami untuk contoh.

Uji fungsi secara lokal

Azure Functions Core Tools memungkinkan Anda menjalankan proyek Azure Functions di komputer pengembangan lokal Anda. Jika diminta untuk memasangnya, Anda akan diminta untuk memasangnya saat pertama kali memulai fungsi dari Visual Studio Code.

  1. Untuk menguji fungsi Anda, atur titik henti dalam Hello kode fungsi aktivitas (Hello/__init__.py). Tekan F5 atau pilih Debug: Start Debugging dari palet perintah untuk memulai proyek aplikasi fungsi. Output dari Core Tools ditampilkan di panel Terminal .
  1. Untuk menguji fungsi Anda, atur titik henti dalam hello kode fungsi aktivitas. Tekan F5 atau pilih Debug: Start Debugging dari palet perintah untuk memulai proyek aplikasi fungsi. Output dari Core Tools ditampilkan di panel Terminal .

Catatan

Untuk informasi selengkapnya tentang penelusuran kesalahan, lihat Diagnostik Fungsi Tahan Lama.

  1. Durable Functions memerlukan akun penyimpanan Azure agar berjalan. Saat Visual Studio Code meminta Anda untuk memilih akun penyimpanan, pilih Pilih akun penyimpanan.

    Cuplikan layar cara membuat akun penyimpanan.

  2. Ikuti permintaan dan berikan informasi berikut untuk membuat akun penyimpanan baru di Azure:

    Prompt Nilai Deskripsi
    Pilih langganan nama langganan Anda Pilih langganan Azure Anda
    Pilih akun penyimpanan Buat akun penyimpanan baru
    Masukkan nama akun penyimpanan nama unik Masukkan nama akun penyimpanan yang akan dibuat
    Pilih grup sumber daya nama unik Nama grup sumber daya yang akan dibuat
    Pilih lokasi wilayah Memilih wilayah yang dekat dengan Anda
  3. Di panelTerminal, salin titik akhir URL dari fungsi yang dipicu HTTP Anda.

    Cuplikan layar output lokal Azure.

  1. Dengan browser Anda, atau alat sepertiPostman atau cURL, kirim permintaan ke titik akhir URL. Ganti segmen terakhir dengan nama fungsi orkestrator (HelloOrchestrator). URL harus mirip dengan http://localhost:7071/api/orchestrators/HelloOrchestrator.

    Responsnya adalah hasil awal dari fungsi HTTP yang memberi tahu Anda orkestrasi tahan lama telah berhasil dimulai. Proses ini bukan merupakan hasil akhir dari orkestrasi. Respons mencakup beberapa URL yang berguna. Untuk saat ini, mari buat kueri status orkestrasi.

  1. Dengan browser Anda, atau alat sepertiPostman atau cURL, kirim permintaan ke titik akhir URL. Ganti segmen terakhir dengan nama fungsi orkestrator (hello_orchestrator). URL harus mirip dengan http://localhost:7071/api/orchestrators/hello_orchestrator.

    Responsnya adalah hasil awal dari fungsi HTTP yang memberi tahu Anda orkestrasi tahan lama telah berhasil dimulai. Proses ini bukan merupakan hasil akhir dari orkestrasi. Respons mencakup beberapa URL yang berguna. Untuk saat ini, mari buat kueri status orkestrasi.

  1. Salin nilai URL untuk statusQueryGetUri, tempelkan di bilah alamat browser, dan jalankan permintaan. Atau, Anda juga dapat terus menggunakan Postman untuk memunculkan permintaan GET.

    Permintaan akan membuat kueri instans orkestrasi untuk status tersebut. Anda akan mendapatkan respons akhir, yang menunjukkan bahwa instans telah selesai dan mencakup output atau hasil dari fungsi tahan lama. Respons terlihat seperti:

{
    "name": "HelloOrchestrator",
    "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"
}
{
    "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"
}
  1. Untuk menghentikan penelusuran kesalahan, tekan Shift + F5 di Visual Studio Code.

Setelah verifikasi bahwa fungsi berjalan dengan benar di komputer lokal Anda, saatnya untuk menerbitkan proyek ke Azure.

Masuk ke Azure

Sebelum dapat membuat sumber daya Azure atau menerbitkan aplikasi, Anda harus masuk ke Azure.

  1. Jika Anda belum masuk, pilih ikon Azure di bilah Aktivitas. Lalu, di area Sumber Daya, pilih Masuk ke Azure...

    Cuplikan layar masuk ke jendela Azure dalam VS Code.

    Jika sudah masuk dan dapat melihat langganan Anda yang ada, buka bagian berikutnya. Jika Anda belum memiliki akun Azure, pilih Buat Akun Azure.... Siswa dapat memilih Buat Akun Azure for Students....

  2. Saat diminta di browser, pilih akun Azure Anda dan masuk menggunakan kredensial akun Azure Anda. Jika membuat akun baru, Anda dapat masuk setelah akun berhasil dibuat.

  3. Setelah berhasil masuk, Anda dapat menutup jendela browser baru. Langganan dalam akun Azure Anda ditampilkan di bilah sisi.

Membuat aplikasi fungsi di Azure

Di bagian ini, Anda membuat aplikasi fungsi dan sumber daya terkait di langganan Azure Anda.

  1. Pilih ikon Azure di bilah Aktivitas. Lalu, di area Sumber Daya, pilih ikon + dan pilih opsi Buat Aplikasi Fungsi di Azure.

    Membuat sumber daya di langganan Azure Anda

  2. Berikan informasi berikut pada permintaan:

    Prompt Pilihan
    Pilih langganan Pilih langganan yang akan digunakan. Anda tidak akan melihat permintaan ini jika Anda hanya memiliki satu langganan yang terlihat di bawah Sumber Daya.
    Masukkan nama unik global untuk aplikasi fungsi Ketik nama yang valid di jalur URL. Nama yang Anda ketik akan divalidasi untuk memastikan bahwa nama tersebut bersifat unik di Azure Functions.
    Pilih tumpukan runtime Pilih versi bahasa pemrogram yang telah Anda jalankan secara lokal.
    Pilih lokasi untuk sumber daya baru Pilih wilayah yang lebih dekat dengan Anda untuk kinerja yang lebih baik.

    Ekstensi tersebut menampilkan status sumber daya individual saat dibuat di Azure pada panel Azure: Log Aktivitas.

    Log pembuatan sumber daya Azure

  3. Setelah pembuatan selesai, sumber daya Azure berikut dibuat di langganan Anda. Sumber daya dinamai berdasarkan nama aplikasi fungsi Anda:

    • Grup sumber daya, yang merupakan kontainer logis untuk sumber daya terkait.
    • Akun Azure Storage standar, memelihara status dan informasi lain tentang proyek Anda.
    • Aplikasi fungsi, menyediakan lingkungan untuk menjalankan kode fungsi Anda. Aplikasi fungsi memungkinkan Anda mengelompokkan fungsi sebagai unit logis untuk memudahkan pengelolaan, penerapan, dan berbagi sumber daya dalam paket hosting yang sama.
    • Paket App Service, menentukan host yang mendasari aplikasi fungsi Anda.
    • Instans Application Insights tersambung ke aplikasi fungsi, yang melacak penggunaan fungsi Anda di aplikasi.

    Notifikasi ditampilkan setelah aplikasi fungsi Anda dibuat dan paket penyebaran diterapkan.

    Tip

    Secara default, sumber daya Azure yang diperlukan oleh aplikasi fungsi Anda dibuat berdasarkan nama aplikasi fungsi yang Anda berikan. Secara default, sumber daya ini juga dibuat di grup sumber daya baru yang sama dengan aplikasi fungsi. Jika ingin menyesuaikan nama sumber daya ini atau menggunakan kembali sumber daya yang ada, Anda perlu menerbitkan proyek dengan opsi pembuatan lanjutan.

Menyebarkan proyek ke Azure

Penting

Penyebaran ke aplikasi fungsi yang ada selalu menimpa konten aplikasi tersebut di Azure.

  1. Di area Sumber Daya aktivitas Azure, temukan sumber daya aplikasi fungsi yang baru saja Anda buat, klik kanan sumber daya, dan pilih Sebarkan ke aplikasi fungsi....

  2. Saat diminta untuk menimpa penyebaran sebelumnya, pilih Sebarkan untuk menyebarkan kode fungsi Anda ke sumber daya aplikasi fungsi baru.

  3. Setelah penyebaran selesai, pilih Tampilkan Output untuk melihat hasil pembuatan dan penyebaran, termasuk sumber daya Azure yang Anda buat. Jika melewatkan pemberitahuan, pilih ikon bel di sudut kanan bawah untuk melihatnya lagi.

    Cuplikan layar jendela Tampilan Output.

Uji fungsi Anda di Azure

  1. Salin URL pemicu HTTP dari panelOutput. URL yang memanggil fungsi terpicu HTTP Anda harus dalam format ini: https://<functionappname>.azurewebsites.net/api/orchestrators/HelloOrchestrator
  1. Salin URL pemicu HTTP dari panelOutput. URL yang memanggil fungsi terpicu HTTP Anda harus dalam format ini: https://<functionappname>.azurewebsites.net/api/orchestrators/hello_orchestrator
  1. Tempelkan URL baru ini untuk permintaan ke bilah alamat browser Anda. Anda harus mendapatkan respons status yang sama seperti sebelumnya saat menggunakan aplikasi yang diterbitkan.

Langkah berikutnya

Anda telah menggunakan Visual Studio Code untuk membuat dan menerbitkan aplikasi fungsi Python yang tahan lama.