Sdílet prostřednictvím


Implementace zásad opakování pomocí Pythonu

Každá aplikace, která běží v cloudu nebo komunikuje se vzdálenými službami a prostředky, musí být schopná zpracovat přechodné chyby. U těchto aplikací je běžné, že dochází k chybám kvůli momentální ztrátě síťového připojení, vypršení časového limitu požadavku, když je služba nebo prostředek zaneprázdněný, nebo kvůli jiným faktorům. Vývojáři by měli vytvářet aplikace pro transparentní zpracování přechodných chyb za účelem zlepšení stability a odolnosti.

V tomto článku se dozvíte, jak pomocí klientské knihovny Azure Storage pro Python nastavit zásady opakování pro aplikaci, která se připojuje ke službě Azure Blob Storage. Zásady opakování definují, jak aplikace zpracovává neúspěšné požadavky, a měly by se vždy ladit tak, aby odpovídaly obchodním požadavkům aplikace a povaze selhání.

Konfigurace možností opakování

Zásady opakování pro Blob Storage se konfigurují programově a nabízejí kontrolu nad tím, jak se možnosti opakování použijí pro různé požadavky a scénáře služby. Například webová aplikace, která vydává požadavky na základě interakce uživatele, může implementovat zásadu s menším počtem opakování a kratšími prodlevami, aby se zvýšila rychlost odezvy a upozorňují uživatele, když dojde k chybě. Případně může aplikace nebo komponenta, která spouští dávkové požadavky na pozadí, zvýšit počet opakovaných pokusů a použít exponenciální strategii zpětného odpočtu, která umožní úspěšné dokončení žádosti.

Pokud chcete nakonfigurovat zásady opakování pro požadavky klientů, můžete si vybrat z následujících přístupů:

  • Použijte výchozí hodnoty: Výchozí zásada opakování pro klientskou knihovnu Azure Storage pro Python je instance ExponentialRetry s výchozími hodnotami. Pokud nezadáte zásadu opakování, použije se výchozí zásada opakování.
  • Předávat hodnoty jako klíčová slova konstruktoru klienta: Při vytváření objektu klienta pro službu můžete předat hodnoty vlastností zásad opakování jako argumenty klíčových slov. Tento přístup umožňuje přizpůsobit zásady opakování pro klienta a je užitečné, pokud potřebujete nakonfigurovat jenom několik možností.
  • Vytvořte instanci třídy zásad opakování: Můžete vytvořit instanci ExponentialRetry nebo LinearRetry třídy a nastavit vlastnosti pro konfiguraci zásady opakování. Pak můžete předat instanci konstruktoru klienta, aby se zásady opakování použily na všechny požadavky služby.

V následující tabulce jsou uvedeny všechny vlastnosti, které můžete použít ke konfiguraci zásad opakování. Některé z těchto vlastností je možné předat konstruktoru klienta jako klíčová slova, ale některé jsou k dispozici pouze pro použití s instancíExponentialRetry.LinearRetry Tato omezení jsou uvedena v tabulce spolu s výchozími hodnotami pro každou vlastnost, pokud neproděláte žádné změny. Měli byste být proaktivní při ladění hodnot těchto vlastností tak, aby vyhovovaly potřebám vaší aplikace.

Vlastnost Type Popis Default value ExponentialRetry LinearRetry
retry_total int Maximální počet opakování. 3 Ano Yes
retry_connect int Maximální počet opakování připojení 3 Ano Yes
retry_read int Maximální počet opakovaných pokusů o čtení 3 Ano Yes
retry_status int Maximální počet opakovaných pokusů o stav 3 Ano Yes
retry_to_secondary bool Jestli se má požadavek opakovat do sekundárního koncového bodu, pokud je to možné. Tuto možnost použijte pouze pro účty úložiště s povolenou geograficky redundantní replikací, jako je RA-GRS nebo RA-GZRS. Měli byste také zajistit, aby vaše aplikace zvládla potenciálně zastaralá data. False Ano Yes
initial_backoff int Počáteční interval backoffu (v sekundách) pro první opakování. Platí pouze pro exponenciální strategii zpoždnění. 15 sekund Yes No
increment_base int Základ (v sekundách) pro zvýšení initial_backoff po prvním opakování. Platí pouze pro exponenciální strategii zpoždnění. 3 sekundy Yes No
backoff int Interval backoff (v sekundách) mezi jednotlivými opakováními. Platí pouze pro strategii lineárního zásady. 15 sekund No Ano
random_jitter_range int Číslo (v sekundách), které označuje rozsah pro interval zpětného odsud a randomizaci. Například nastavení random_jitter_range na hodnotu 3 znamená, že interval zpětného odsud x se může lišit mezi x+3 a x-3. 3 sekundy Ano Ano

Poznámka:

Vlastnosti retry_connecta retry_readretry_status slouží k počítání různých typů chyb. Zbývající počet opakování se vypočítá jako minimální z následujících hodnot: retry_total, retry_connect, retry_reada retry_status. Z tohoto důvodu nemusí mít nastavení účinek, retry_total pokud nenastavíte i ostatní vlastnosti. Ve většině případů můžete všechny čtyři vlastnosti nastavit na stejnou hodnotu a vynutit maximální počet opakování. Tyto vlastnosti byste ale měli ladit na základě konkrétních potřeb vaší aplikace.

Následující části ukazují, jak nakonfigurovat zásadu opakování pomocí různých přístupů:

Použití výchozích zásad opakování

Výchozí zásadou opakování pro klientskou knihovnu Azure Storage pro Python je instance ExponentialRetry s výchozími hodnotami. Pokud nezadáte zásadu opakování, použije se výchozí zásada opakování. Při vytváření objektu klienta pro službu můžete také předat jakékoli vlastnosti konfigurace jako argumenty klíčových slov.

Následující příklad kódu ukazuje, jak předat hodnotu vlastnosti retry_total jako argument klíčové slovo při vytváření objektu klienta pro službu blob Service. V tomto příkladu používá objekt klienta výchozí zásadu retry_total opakování s vlastností a další vlastnosti počtu opakování nastavené na 5:

# 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)

Vytvoření zásady ExponentialRetry

Zásadu opakování můžete nakonfigurovat tak, že vytvoříte instanci ExponentialRetry a předáte instanci konstruktoru klienta pomocí argumentu klíčového retry_policy slova. Tento přístup může být užitečný, pokud potřebujete nakonfigurovat více vlastností nebo více zásad pro různé klienty.

Následující příklad kódu ukazuje, jak nakonfigurovat možnosti opakování pomocí instance ExponentialRetry. V tomto příkladu jsme nastavili initial_backoff 10 sekund, increment_base na 4 sekundy a retry_total na 3 opakování:

# 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)

Vytvoření zásady LinearRetry

Zásadu opakování můžete nakonfigurovat tak, že vytvoříte instanci LinearRetry a předáte instanci konstruktoru klienta pomocí argumentu klíčového retry_policy slova. Tento přístup může být užitečný, pokud potřebujete nakonfigurovat více vlastností nebo více zásad pro různé klienty.

Následující příklad kódu ukazuje, jak nakonfigurovat možnosti opakování pomocí instance LinearRetry. V tomto příkladu jsme nastavili backoff 10 sekund, retry_total na 3 opakování a retry_to_secondary na True:

# 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)

Další kroky

  • Tento článek je součástí příručky pro vývojáře služby Blob Storage pro Python. Podívejte se na úplný seznam článků příručky pro vývojáře na webu Sestavení aplikace.
  • Pokyny k architektuře a obecné osvědčené postupy pro zásady opakování najdete v tématu Zpracování přechodných chyb.
  • Pokyny k implementaci vzoru opakování pro přechodné selhání najdete v tématu Vzor opakování.