Bagikan melalui


Tutorial: Menggunakan konfigurasi dinamis di Python

Penyedia Python Azure App Configuration mencakup kemampuan penembolokan dan refresh bawaan. Tutorial ini menunjukkan cara mengaktifkan konfigurasi dinamis dalam aplikasi Python.

Prasyarat

Menambahkan nilai kunci

Tambahkan nilai kunci berikut ke penyimpanan Azure App Configuration Anda. Untuk informasi selengkapnya tentang cara menambahkan nilai kunci ke penyimpanan menggunakan portal Azure atau CLI, buka Membuat nilai kunci.

Tombol Nilai Label Jenis konten
message Halo Dunia! Biarkan kosong Biarkan kosong
sentinel 1 Biarkan kosong Biarkan kosong

Catatan

Kunci sentinel adalah kunci yang Anda perbarui setelah menyelesaikan perubahan semua kunci lainnya. Aplikasi Anda memantau kunci sentinel. Saat perubahan terdeteksi, aplikasi Anda me-refresh semua nilai konfigurasi. Pendekatan ini membantu memastikan konsistensi konfigurasi di aplikasi Anda dan mengurangi jumlah keseluruhan permintaan yang dibuat ke penyimpanan Azure App Configuration Anda, dibandingkan dengan memantau semua kunci untuk perubahan.

Aplikasi konsol

  1. Buat file Python baru bernama app.py dan tambahkan kode berikut:

    Anda menggunakan DefaultAzureCredential untuk mengautentikasi ke penyimpanan App Configuration Anda. Ikuti instruksi untuk menetapkan kredensial Anda peran Pembaca Data App Configuration. Pastikan untuk mengizinkan waktu yang memadai agar izin disebarluaskan sebelum menjalankan aplikasi Anda.

    from azure.appconfiguration.provider import load, WatchKey
    from azure.identity import DefaultAzureCredential
    import os
    import time
    
    endpoint = os.environ.get("APPCONFIGURATION_ENDPOINT")
    
    # Connecting to Azure App Configuration using connection string
    # Setting up to refresh when the Sentinel key is changed.
    config = load(
        endpoint=endpoint,
        credential=DefaultAzureCredential(),
        refresh_on=[WatchKey("sentinel")],
        refresh_interval=10, # Default value is 30 seconds, shorted for this sample
    )
    
    print("Update the `message` in your Azure App Configuration store using Azure portal or CLI.")
    print("First, update the `message` value, and then update the `sentinel` key value.")
    
    while (True):
        # Refreshing the configuration setting
        config.refresh()
    
        # Current value of message
        print(config["message"])
    
        # Waiting before the next refresh
        time.sleep(5)
    
  2. Jalankan skrip Anda:

    python app.py
    
  3. Verifikasi Output:

    Update the `message` in your Azure App Configuration store using Azure portal or CLI.
    First, update the `message` value, and then update the `sentinel` key value.
    Hello World!
    
  4. Perbarui nilai kunci berikut ke penyimpanan Azure App Configuration.

    Tombol Nilai Label Jenis konten
    message Halo Dunia Disegarkan! Biarkan kosong Biarkan kosong
    sentinel 2 Biarkan kosong Biarkan kosong
  5. Setelah nilai diperbarui, nilai yang diperbarui akan dicetak ketika interval refresh telah berlalu.

    Hello World Refreshed!
    

Aplikasi web

Contoh berikut menunjukkan cara memperbarui aplikasi web yang ada untuk menggunakan nilai konfigurasi yang dapat di-refresh. Panggilan balik dapat diberikan ke on_refresh_success argumen load kata kunci fungsi. Panggilan balik ini akan dipanggil ketika perubahan konfigurasi terdeteksi di server, dan dapat digunakan untuk memperbarui nilai konfigurasi dalam aplikasi.

Di app.py, siapkan Azure App Configuration untuk memuat nilai konfigurasi Anda. Kemudian perbarui titik akhir Anda untuk memeriksa nilai konfigurasi yang diperbarui.

from azure.appconfiguration.provider import load, WatchKey
from azure.identity import DefaultAzureCredential

azure_app_config = None  # declare azure_app_config as a global variable

def on_refresh_success():
   app.config.update(azure_app_config)


global azure_app_config
azure_app_config = load(endpoint=os.environ.get("AZURE_APPCONFIG_ENDPOINT"),
                        credential=DefaultAzureCredential(),
                        refresh_on=[WatchKey("sentinel")],
                        on_refresh_success=on_refresh_success,
                        refresh_interval=10, # Default value is 30 seconds, shortened for this sample
                    )




@app.route("/")
def index():
    global azure_app_config
    # Refresh the configuration from Azure App Configuration service.
    azure_app_config.refresh()

    # Access a configuration setting directly from within Flask configuration
    print("Request for index page received")
    context = {}
    context["message"] = app.config.get("message")
    return render_template("index.html", **context)

Perbarui templat index.html Anda untuk menggunakan nilai konfigurasi baru.

<!doctype html>
<head>
  <title>Hello Azure App Configuration - Python Flask Example</title>
</head>
<html>

<body>
  <main>
    <div>
      <h1>{{message}}</h1>
    </div>
  </main>
</body>
</html>

Anda dapat menemukan proyek sampel lengkap di sini.

Setiap kali titik akhir ini dipicu, pemeriksaan refresh dapat dilakukan untuk memastikan nilai konfigurasi terbaru digunakan. Pemeriksaan dapat segera kembali jika interval refresh belum berlalu atau refresh sudah berlangsung.

Saat refresh selesai, semua nilai diperbarui sekaligus, sehingga konfigurasi selalu konsisten dalam objek.

CATATAN: Jika interval refresh belum berlalu, refresh tidak akan dicoba dan dikembalikan segera.

Langkah berikutnya

Dalam tutorial ini, Anda mengaktifkan aplikasi Python untuk menyegarkan pengaturan konfigurasi secara dinamis dari Azure App Configuration. Untuk mempelajari cara menggunakan identitas terkelola Azure untuk menyederhanakan akses ke Azure App Configuration, lanjutkan ke tutorial berikutnya.