Ú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
- ExponenciálisRetry-szabályzat létrehozása
- LinearRetry-szabályzat létrehozása
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 ExponentialRetry
haszná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 LinearRetry
haszná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
- Ez a cikk a Python Blob Storage fejlesztői útmutatójának része. Az alkalmazás buildeléséhez tekintse meg a fejlesztői útmutatók teljes listáját.
- Az újrapróbálkozási szabályzatokkal kapcsolatos architekturális útmutatásért és az újrapróbálkozási szabályzatok általános ajánlott eljárásaiért lásd : Átmeneti hibakezelés.
- Az átmeneti hibák újrapróbálkozási mintájának implementálásával kapcsolatos útmutatásért lásd : Újrapróbálkozási minta.