Megosztás a következőn keresztül:


Újrapróbálkozési szabályzat implementálása a Pythonnal

A felhőben futó vagy a távoli szolgáltatásokkal és erőforrásokkal kommunikáló alkalmazásoknak képesnek kell lenniük az átmeneti hibák kezelésére. Gyakran előfordul, hogy ezek az alkalmazások a hálózati kapcsolat pillanatnyi megszakadása, egy szolgáltatás vagy erőforrás foglaltsága esetén a kérések időtúllépése vagy más tényezők miatt tapasztalnak hibákat. A fejlesztőknek olyan alkalmazásokat kell létrehozniuk, amelyek transzparensen kezelik az átmeneti hibákat a stabilitás és a rugalmasság javítása érdekében.

Ebből a cikkből megtudhatja, hogyan állíthat be újrapróbálkozési szabályzatot az Azure Blob Storage-hoz csatlakozó alkalmazásokhoz a PythonHoz készült Azure Storage ügyfélkódtár használatával. Az újrapróbálkoztatási szabályzatok meghatározzák, hogyan kezeli az alkalmazás a sikertelen kérelmeket, és mindig úgy kell hangolni, hogy megfeleljen az alkalmazás üzleti követelményeinek és a hiba jellegének.

Újrapróbálkozás beállításainak konfigurálása

A Blob Storage újrapróbálkozési szabályzatai programozott módon vannak konfigurálva, így szabályozható, hogy a rendszer hogyan alkalmazza az újrapróbálkozások beállításait a különböző szolgáltatáskérésekre és forgatókönyvekre. A felhasználói interakción alapuló kéréseket kibocsátó webalkalmazások például kevesebb újrapróbálkozással és rövidebb késéssel rendelkező szabályzatot implementálhatnak, hogy növeljék a válaszképességet, és hiba esetén értesítsék a felhasználót. Másik lehetőségként egy, a háttérben kötegelt kérelmeket futtató alkalmazás vagy összetevő növelheti az újrapróbálkozások számát, és exponenciális visszalépési stratégia használatával lehetővé teheti a kérés sikeres befejezését.

Ha újrapróbálkozési szabályzatot szeretne konfigurálni az ügyfélkérésekhez, az alábbi módszerek közül választhat:

  • Használja az alapértelmezett értékeket: A Pythonhoz készült Azure Storage-ügyfélkódtár alapértelmezett újrapróbálkozási szabályzata az ExponenciálisRetry egy példánya az alapértelmezett értékekkel. Ha nem ad meg újrapróbálkozési szabályzatot, a rendszer az alapértelmezett újrapróbálkozési szabályzatot használja.
  • Értékek átadása kulcsszavakként az ügyfélkonstruktornak: Az újrapróbálkozási szabályzat tulajdonságainak értékeit kulcsszóargumentumként is átadhatja, amikor létrehoz egy ügyfélobjektumot a szolgáltatáshoz. Ez a módszer lehetővé teszi az ügyfél újrapróbálkozési szabályzatának testreszabását, és akkor hasznos, ha csak néhány beállítást kell konfigurálnia.
  • Újrapróbálkozási szabályzatosztály egy példányának létrehozása: Létrehozhatja az ExponenciálisRetry vagy LinearRetry osztály egy példányát, és beállíthatja a tulajdonságokat az újrapróbálkozási szabályzat konfigurálásához. Ezután átadhatja a példányt az ügyfélkonstruktornak, hogy az újrapróbálkozési szabályzatot az összes szolgáltatáskérésre alkalmazza.

Az alábbi táblázat az újrapróbálkozási szabályzat konfigurálásához használható összes tulajdonságot tartalmazza. Ezen tulajdonságok bármelyike átadható kulcsszavakként az ügyfélkonstruktornak, de néhány csak egy ExponentialRetry vagy LinearRetry több példányhoz használható. Ezeket a korlátozásokat a táblázat tartalmazza, valamint az egyes tulajdonságok alapértelmezett értékeit, ha nem módosítja őket. Proaktívnak kell lennie ezeknek a tulajdonságoknak az értékeinek finomhangolásában az alkalmazás igényeinek megfelelően.

Tulajdonság Típus Leírás Alapértelmezett érték Exponenciálisretria LinearRetry
retry_total egész Az újrapróbálkozások maximális száma. 3 Igen Igen
retry_connect egész A csatlakozási újrapróbálkozések maximális száma 3 Igen Igen
retry_read egész Az újrapróbálkozések maximális száma 3 Igen Igen
retry_status egész Az állapot újrapróbálkozásának maximális száma 3 Igen Igen
retry_to_secondary logikai Ha lehet, a kérést újra kell-e próbálkozni a másodlagos végponton. Ezt a lehetőséget csak olyan tárfiókokhoz használja, amelyeken engedélyezve van a georedundáns replikáció, például az RA-GRS vagy az RA-GZRS. Gondoskodnia kell arról is, hogy az alkalmazás kezelni tudja a potenciálisan elavult adatokat. False Igen Igen
initial_backoff egész Az első újrapróbálkozás kezdeti visszalépési időköze (másodpercben). Csak az exponenciális háttérstratégiára vonatkozik. 15 másodperc Igen Nem
increment_base egész A initial_backoff az első újrapróbálkozás után (másodpercben) növelendő alap. Csak az exponenciális háttérstratégiára vonatkozik. 3 másodperc Igen Nem
backoff egész Az egyes újrapróbálkozási próbálkozások közötti visszalépési időköz (másodpercben). Csak lineáris visszalépési stratégiára vonatkozik. 15 másodperc Nem Igen
random_jitter_range egész Egy szám (másodpercben), amely a visszalépési intervallumhoz tartozó jitter/randomize tartományt jelzi. A 3-ra állítás random_jitter_range például azt jelenti, hogy az x visszalépési időköze x+3 és x-3 között változhat. 3 másodperc Igen Igen

Feljegyzés

A tulajdonságok retry_connect, retry_readés retry_status a különböző típusú hibák megszámlálására szolgálnak. A fennmaradó újrapróbálkozási szám a következő értékek minimumaként lesz kiszámítva: retry_total, retry_connect, retry_readés retry_status. Emiatt előfordulhat, hogy a beállítás csak retry_total akkor lesz hatással, ha a többi tulajdonságot is beállítja. A legtöbb esetben mind a négy tulajdonságot ugyanarra az értékre állíthatja, hogy maximális számú újrapróbálkozási elemet kényszerítsen ki. Ezeket a tulajdonságokat azonban az alkalmazás adott igényeinek megfelelően kell hangolnia.

Az alábbi szakaszok bemutatják, hogyan konfigurálhat újrapróbálkozési szabályzatot különböző megközelítések használatával:

Az alapértelmezett újrapróbálkozési szabályzat használata

A PythonHoz készült Azure Storage-ügyfélkódtár alapértelmezett újrapróbálkozási szabályzata az ExponenciálisRetry egy példánya az alapértelmezett értékekkel. Ha nem ad meg újrapróbálkozési szabályzatot, a rendszer az alapértelmezett újrapróbálkozési szabályzatot használja. Bármely konfigurációs tulajdonságot kulcsszóargumentumként is átadhat, amikor ügyfélobjektumot hoz létre a szolgáltatáshoz.

Az alábbi példakód bemutatja, hogyan adhat át egy értéket a retry_total tulajdonságnak kulcsszóargumentumként, amikor ügyfélobjektumot hoz létre a blobszolgáltatáshoz. Ebben a példában az ügyfélobjektum az alapértelmezett újrapróbálkozási szabályzatot használja az retry_total 5 értékre beállított tulajdonsággal és egyéb újrapróbálkozási számtulajdonságokkal:

# TODO: Replace <storage-account-name> with your actual storage account name
account_url = "https://<storage-account-name>.blob.core.windows.net"
credential = DefaultAzureCredential()

# Create the BlobServiceClient object with retry options
blob_service_client = BlobServiceClient(account_url, credential, retry_total=5,
                                        retry_connect=5, retry_read=5, retry_status=5)

ExponenciálisRetry-szabályzat létrehozása

Újrapróbálkozási szabályzatot úgy konfigurálhat, hogy létrehoz egy ExponenciálisRetry-példányt, és átadja a példányt az ügyfélkonstruktornak a retry_policy kulcsszóargumentum használatával. Ez a módszer akkor lehet hasznos, ha több tulajdonságot vagy több házirendet kell konfigurálnia különböző ügyfelekhez.

Az alábbi példakód bemutatja, hogyan konfigurálhatja az újrapróbálkozás beállításait egy példány ExponentialRetryhasználatával. Ebben a példában 10 másodpercre, 4 másodpercre és increment_base retry_total 3 újrapróbálkozásra állítunk initial_backoff be:

# TODO: Replace <storage-account-name> with your actual storage account name
account_url = "https://<storage-account-name>.blob.core.windows.net"
credential = DefaultAzureCredential()

# Specify retry policy parameters
retry = ExponentialRetry(initial_backoff=10, increment_base=4, retry_total=3)

# Create the BlobServiceClient object
blob_service_client = BlobServiceClient(account_url, credential, retry_policy=retry)

LinearRetry-szabályzat létrehozása

Az újrapróbálkozási szabályzat konfigurálásához hozzon létre egy LinearRetry-példányt, és adja át a példányt az ügyfélkonstruktornak a retry_policy kulcsszóargumentum használatával. Ez a módszer akkor lehet hasznos, ha több tulajdonságot vagy több házirendet kell konfigurálnia különböző ügyfelekhez.

Az alábbi példakód bemutatja, hogyan konfigurálhatja az újrapróbálkozás beállításait egy példány LinearRetryhasználatával. Ebben a példában 10 másodpercre, retry_total 3 újrapróbálkozásra és retry_to_secondary a következőre állítjuk backoff be a következőtTrue:

# TODO: Replace <storage-account-name> with your actual storage account name
account_url = "https://<storage-account-name>.blob.core.windows.net"
credential = DefaultAzureCredential()

# Specify retry policy parameters
retry = LinearRetry(backoff=10, retry_total=3, retry_to_secondary=True)

# Create the BlobServiceClient object
blob_service_client = BlobServiceClient(account_url, credential, retry_policy=retry)

Következő lépések