Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Każda aplikacja, która działa w chmurze lub komunikuje się z usługami zdalnymi i zasobami, musi mieć możliwość obsługi błędów przejściowych. W tych aplikacjach często dochodzi do błędów spowodowanych chwilową utratą łączności sieciowej, przekroczeniem limitu czasu żądania, gdy usługa lub zasób są zajęte, lub z innych przyczyn. Deweloperzy powinni tworzyć aplikacje do obsługi błędów przejściowych w sposób niewidoczny, aby poprawić stabilność i odporność.
Z tego artykułu dowiesz się, jak używać biblioteki klienta usługi Azure Storage dla języka Python do konfigurowania zasad ponawiania prób dla aplikacji łączącej się z usługą Azure Blob Storage. Zasady ponawiania prób definiują sposób obsługi żądań niepowodzeń przez aplikację i powinny być zawsze dostosowane do wymagań biznesowych aplikacji i charakteru awarii.
Konfigurowanie opcji ponawiania prób
Zasady ponawiania prób dla usługi Blob Storage są konfigurowane programowo, co zapewnia kontrolę nad sposobem stosowania opcji ponawiania prób do różnych żądań obsługi i scenariuszy. Na przykład aplikacja internetowa wydająca żądania na podstawie interakcji użytkownika może implementować zasady z mniejszą liczbą ponownych prób i krótszymi opóźnieniami w celu zwiększenia czasu reakcji i powiadamiania użytkownika o wystąpieniu błędu. Alternatywnie aplikacja lub składnik uruchamiający żądania wsadowe w tle może zwiększyć liczbę ponownych prób i użyć strategii wykładniczego opóźnienia, aby umożliwić pomyślne zakończenie żądania.
Aby skonfigurować zasady ponawiania dla żądań klientów, można wybrać jedną z następujących metod:
- Użyj wartości domyślnych: domyślna polityka ponowienia dla biblioteki klienta usługi Azure Storage dla języka Python to wystąpienie ExponentialRetry z wartościami domyślnymi. Jeśli nie określisz zasad ponawiania prób, będą używane domyślne zasady ponawiania.
- Przekaż wartości jako słowa kluczowe do konstruktora klienta: podczas tworzenia obiektu klienta dla usługi można przekazać wartości właściwości zasad ponawiania prób jako argumentów słów kluczowych. Takie podejście umożliwia dostosowanie zasad ponawiania dla klienta i jest przydatne, jeśli trzeba skonfigurować tylko kilka opcji.
- Utwórz wystąpienie klasy zasad ponawiania: możesz utworzyć wystąpienie klasy ExponentialRetry lub LinearRetry i ustawić właściwości, aby skonfigurować zasady ponawiania. Następnie można przekazać wystąpienie do konstruktora klienta, aby zastosować zasady ponawiania prób do wszystkich żądań obsługi.
W poniższej tabeli przedstawiono wszystkie właściwości, których można użyć do skonfigurowania zasad ponawiania prób. Dowolne z tych właściwości można przekazać jako słowa kluczowe do konstruktora klienta, ale niektóre są dostępne tylko do użycia z wystąpieniem ExponentialRetry
lub LinearRetry
. Te ograniczenia są zanotowane w tabeli wraz z wartościami domyślnymi dla każdej właściwości, jeśli nie wprowadzisz żadnych zmian. Należy aktywnie dostrajać wartości tych właściwości, aby spełniały potrzeby aplikacji.
Właściwość | Rodzaj | Opis | Domyślna wartość | ExponentialRetry | LinearRetry |
---|---|---|---|---|---|
retry_total |
int | Maksymalna liczba ponownych prób. | 3 | Tak | Tak |
retry_connect |
int | Maksymalna liczba ponownych prób połączenia | 3 | Tak | Tak |
retry_read |
int | Maksymalna liczba ponownych prób odczytu | 3 | Tak | Tak |
retry_status |
int | Maksymalna liczba ponownych prób statusu | 3 | Tak | Tak |
retry_to_secondary |
bool | Czy żądanie powinno zostać ponowione do pomocniczego punktu końcowego, jeśli to możliwe. Tej opcji należy używać tylko dla kont magazynu z włączoną replikacją geograficznie nadmiarową, taką jak RA-GRS lub RA-GZRS. Należy również upewnić się, że aplikacja może obsługiwać potencjalnie nieaktualne dane. | False |
Tak | Tak |
initial_backoff |
int | Początkowy interwał wycofywania (w sekundach) dla pierwszej próby. Dotyczy tylko strategii wycofywania wykładniczego. | 15 sekund | Tak | Nie. |
increment_base |
int | Podstawa (w sekundach), o którą zwiększa się initial_backoff po pierwszej próbie ponowienia. Dotyczy tylko strategii wycofywania wykładniczego. | 3 sekundy | Tak | Nie. |
backoff |
int | Interwał wycofywania (w sekundach) między poszczególnymi ponownymi próbami. Dotyczy tylko strategii wycofywania liniowego. | 15 sekund | Nie. | Tak |
random_jitter_range |
int | Liczba (w sekundach), która wskazuje zakres losowania dla odstępu czasowego. Na przykład ustawienie random_jitter_range wartości 3 oznacza, że interwał wycofywania x może się różnić między x+3 a x-3. |
3 sekundy | Tak | Tak |
Uwaga
Właściwości retry_connect
, retry_read
i retry_status
służą do liczenia różnych typów błędów. Pozostała liczba ponownych prób jest obliczana jako minimum z następujących wartości: retry_total
, retry_connect
, retry_read
, i retry_status
. Jeśli ustawisz tylko retry_total
, może to nie mieć wpływu, dopóki nie ustawisz również innych właściwości. W większości przypadków można ustawić wszystkie cztery właściwości na tę samą wartość, aby wymusić maksymalną liczbę ponownych prób. Należy jednak dostosować te właściwości na podstawie konkretnych potrzeb aplikacji.
W poniższych sekcjach pokazano, jak skonfigurować zasady ponawiania przy użyciu różnych metod:
Użyj domyślnych zasad ponawiania prób
Domyślna polityka ponawiania dla biblioteki klienta Azure Storage w języku Python to instancja ExponentialRetry z wartościami domyślnymi. Jeśli nie określisz zasad ponawiania prób, będą używane domyślne zasady ponawiania. Podczas tworzenia obiektu klienta dla usługi można również przekazać dowolne właściwości konfiguracji jako argumenty kluczowe.
Poniższy przykład kodu pokazuje, jak przekazać wartość właściwości retry_total
jako argument słowa kluczowego podczas tworzenia obiektu klienta dla usługi blob. W tym przykładzie obiekt klienta używa domyślnych zasad ponawiania z właściwością retry_total
i innych właściwości liczby ponownych prób ustawionych 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)
Stwórz zasadę ExponentialRetry
Zasady ponawiania można skonfigurować, tworząc wystąpienie klasy ExponentialRetry i przekazując wystąpienie do konstruktora klienta przy użyciu argumentu kluczowego retry_policy
. Takie podejście może być przydatne, jeśli musisz skonfigurować wiele właściwości lub wiele zasad dla różnych klientów.
Poniższy przykład kodu pokazuje, jak skonfigurować opcje ponawiania przy użyciu wystąpienia ExponentialRetry
. W tym przykładzie ustawiliśmy wartość initial_backoff
10 sekund, increment_base
na 4 sekundy i retry_total
na 3 ponawianie prób:
# 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)
Tworzenie zasad LinearRetry
Zasady ponawiania można skonfigurować, tworząc wystąpienie metody LinearRetry i przekazując wystąpienie do konstruktora klienta przy użyciu argumentu kluczowego retry_policy
. Takie podejście może być przydatne, jeśli musisz skonfigurować wiele właściwości lub wiele zasad dla różnych klientów.
Poniższy przykład kodu pokazuje, jak skonfigurować opcje ponawiania przy użyciu wystąpienia LinearRetry
programu . W tym przykładzie ustawiliśmy wartość backoff
10 sekund, retry_total
na 3 ponawianie prób i retry_to_secondary
na True
wartość :
# 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)
Następne kroki
- Ten artykuł jest częścią przewodnika dla deweloperów usługi Blob Storage dla języka Python. Zobacz pełną listę artykułów z przewodnika dla deweloperów na stronie Tworzenie aplikacji.
- Aby uzyskać wskazówki dotyczące architektury i ogólne najlepsze rozwiązania dotyczące zasad ponawiania prób, zobacz Obsługa błędów przejściowych.
- Aby uzyskać wskazówki dotyczące implementowania wzorca ponawiania prób dla błędów przejściowych, zobacz Wzorzec ponawiania prób.