Gedeelde Azure Core-clientbibliotheek voor Python - versie 1.29.6
Azure Core biedt gedeelde uitzonderingen en modules voor Python SDK-clientbibliotheken. Deze bibliotheken volgen de Azure SDK-ontwerprichtlijnen voor Python .
Als u een ontwikkelaar van een clientbibliotheek bent, raadpleegt u naslaginformatie voor clientbibliotheekontwikkelaars voor meer informatie.
Broncode | Pakket (Pypi) | Pakket (Conda) | API-referentiedocumentatie
Disclaimer
Ondersteuning voor Azure SDK Python-pakketten voor Python 2.7 is beëindigd op 1 januari 2022. Voor meer informatie en vragen raadpleegt u https://github.com/Azure/azure-sdk-for-python/issues/20691
Aan de slag
Normaal gesproken hoeft u Azure Core niet te installeren; deze wordt geïnstalleerd wanneer u een van de clientbibliotheken installeert. Als u deze expliciet wilt installeren (bijvoorbeeld om uw eigen clientbibliotheek te implementeren), kunt u deze hier vinden.
Belangrijkste concepten
Azure Core Library-uitzonderingen
AzureError
AzureError is de basisuitzondering voor alle fouten.
class AzureError(Exception):
def __init__(self, message, *args, **kwargs):
self.inner_exception = kwargs.get("error")
self.exc_type, self.exc_value, self.exc_traceback = sys.exc_info()
self.exc_type = self.exc_type.__name__ if self.exc_type else type(self.inner_exception)
self.exc_msg = "{}, {}: {}".format(message, self.exc_type, self.exc_value) # type: ignore
self.message = str(message)
self.continuation_token = kwargs.get("continuation_token")
super(AzureError, self).__init__(self.message, *args)
message is een bericht (str) dat aan de uitzondering moet worden gekoppeld.
args zijn eventuele aanvullende argumenten die moeten worden opgenomen met uitzondering.
kwargs zijn trefwoordargumenten die moeten worden opgenomen met de uitzondering. Gebruik de trefwoordfout om een interne uitzondering door te geven en continuation_token voor een tokenreferentie om een onvolledige bewerking voort te zetten.
De volgende uitzonderingen worden overgenomen van AzureError:
ServiceRequestError
Er is een fout opgetreden tijdens een poging om een aanvraag naar de service te verzenden. Er is geen aanvraag verzonden.
ServiceResponseError
De aanvraag is verzonden, maar de client begrijpt het antwoord niet. Er is mogelijk een time-out opgetreden voor de verbinding. Deze fouten kunnen opnieuw worden geprobeerd voor idempotente of veilige bewerkingen.
HttpResponseError
Er is een aanvraag gedaan en er is een statuscode voor niet-geslaagd ontvangen van de service.
class HttpResponseError(AzureError):
def __init__(self, message=None, response=None, **kwargs):
self.reason = None
self.response = response
if response:
self.reason = response.reason
self.status_code = response.status_code
self.error = self._parse_odata_body(ODataV4Format, response) # type: Optional[ODataV4Format]
if self.error:
message = str(self.error)
else:
message = message or "Operation returned an invalid status '{}'".format(
self.reason
)
super(HttpResponseError, self).__init__(message=message, **kwargs)
bericht is het foutbericht van het HTTP-antwoord (optioneel)
antwoord is het HTTP-antwoord (optioneel).
kwargs zijn trefwoordargumenten die moeten worden opgenomen met de uitzondering.
De volgende uitzonderingen worden overgenomen van HttpResponseError:
DecodeError
Er is een fout opgetreden tijdens het deserialisatie van antwoorden.
IncompleteReadError
Er is een fout opgetreden als de peer de verbinding sluit voordat we de volledige berichttekst hebben ontvangen.
ResourceExistsError
Een foutbericht met statuscode 4xx. Dit wordt niet rechtstreeks veroorzaakt door de Azure-kernpijplijn.
ResourceNotFoundError
Een foutreactie, meestal geactiveerd door een 412-antwoord (voor update) of 404 (voor get/post).
ResourceModifiedError
Een foutbericht met statuscode 4xx, meestal 412 Conflict. Dit wordt niet rechtstreeks veroorzaakt door de Azure-kernpijplijn.
ResourceNotModifiedError
Een foutbericht met statuscode 304. Dit wordt niet rechtstreeks veroorzaakt door de Azure-kernpijplijn.
ClientAuthenticationError
Een foutbericht met statuscode 4xx. Dit wordt niet rechtstreeks veroorzaakt door de Azure-kernpijplijn.
TooManyRedirectsError
Er is een fout opgetreden wanneer het maximum aantal omleidingspogingen is bereikt. Het maximum aantal omleidingen kan worden geconfigureerd in RedirectPolicy.
class TooManyRedirectsError(HttpResponseError):
def __init__(self, history, *args, **kwargs):
self.history = history
message = "Reached maximum redirect attempts."
super(TooManyRedirectsError, self).__init__(message, *args, **kwargs)
geschiedenis wordt gebruikt om de aanvragen/antwoorden te documenteert die hebben geresulteerd in omgeleide aanvragen.
args zijn eventuele aanvullende argumenten die moeten worden opgenomen met uitzondering.
kwargs zijn trefwoordargumenten die moeten worden opgenomen met de uitzondering.
StreamConsumedError
Er is een fout opgetreden als u toegang probeert te krijgen tot de stream van azure.core.rest.HttpResponse
of azure.core.rest.AsyncHttpResponse
zodra de antwoordstroom is verbruikt.
StreamClosedError
Er is een fout opgetreden als u toegang probeert te krijgen tot de stream van de azure.core.rest.HttpResponse
of azure.core.rest.AsyncHttpResponse
zodra de antwoordstroom is gesloten.
ResponseNotReadError
Er is een fout opgetreden als u toegang probeert te krijgen tot de content
van azure.core.rest.HttpResponse
of azure.core.rest.AsyncHttpResponse
voordat u eerst de bytes van het antwoord leest.
Configuraties
Bij het aanroepen van de methoden kunnen sommige eigenschappen worden geconfigureerd door door te geven als kwargs-argumenten.
Parameters | Description |
---|---|
Headers | De HTTP-aanvraagheaders. |
request_id | De aanvraag-id die moet worden toegevoegd aan de header. |
user_agent | Indien opgegeven, wordt deze toegevoegd vóór de tekenreeks van de gebruikersagent. |
logging_enable | Gebruik om per bewerking in te schakelen. De standaardwaarde is False . |
Logger | Indien opgegeven, wordt deze gebruikt om informatie te registreren. |
response_encoding | De te gebruiken codering als bekend voor deze service (automatische detectie wordt uitgeschakeld). |
proxy's | Wijst protocol of protocol en hostnaam toe aan de URL van de proxy. |
raw_request_hook | Callback-functie. Wordt op verzoek aangeroepen. |
raw_response_hook | Callback-functie. Wordt aangeroepen bij het antwoord. |
network_span_namer | Een aanroepbaar om de spannaam aan te passen. |
tracing_attributes | Kenmerken die moeten worden ingesteld voor alle gemaakte reeksen. |
permit_redirects | Of de client omleidingen toestaat. De standaardwaarde is True . |
redirect_max | Het maximum aantal toegestane omleidingen. De standaardwaarde is 30 . |
retry_total | Het totale aantal nieuwe pogingen dat moet worden toegestaan. Heeft voorrang op andere aantallen. De standaardwaarde is 10 . |
retry_connect | Hoeveel verbindingsgerelateerde fouten moeten opnieuw worden geprobeerd. Dit zijn fouten die zijn opgetreden voordat de aanvraag naar de externe server wordt verzonden, waarvan we aannemen dat de server niet is geactiveerd om de aanvraag te verwerken. De standaardwaarde is 3 . |
retry_read | Hoe vaak moet u het opnieuw proberen bij leesfouten. Deze fouten worden gegenereerd nadat de aanvraag naar de server is verzonden, dus de aanvraag kan neveneffecten hebben. De standaardwaarde is 3 . |
retry_status | Hoe vaak moet u het opnieuw proberen met ongeldige statuscodes. De standaardwaarde is 3 . |
retry_backoff_factor | Een uitstelfactor die moet worden toegepast tussen pogingen na de tweede poging (de meeste fouten worden onmiddellijk opgelost door een tweede poging zonder vertraging). Beleid voor opnieuw proberen wordt in de slaapstand gezet voor: {backoff factor} * (2 ** ({number of total retries} - 1)) seconden. Als de backoff_factor 0,1 is, wordt de nieuwe poging tussen nieuwe pogingen in de slaapstand gezet voor [0.0s, 0.2s, 0.4s, ...]. De standaardwaarde is 0.8 . |
retry_backoff_max | De maximale verloftijd. De standaardwaarde is 120 seconden (2 minuten). |
retry_mode | Vaste of exponentiële vertraging tussen pogingen, standaard is Exponential . |
timeout | Time-outinstelling voor de bewerking in seconden, de standaardwaarde is 604800 s (7 dagen). |
connection_timeout | Eén float in seconden voor de time-out van de verbinding. Standaard ingesteld op 300 seconden. |
read_timeout | Eén float in seconden voor de time-out van het lezen. Standaard ingesteld op 300 seconden. |
connection_verify | SSL-certificaatverificatie. Standaard ingeschakeld. Als u wilt uitschakelen op Onwaar, kunt u ook instellen op het pad naar een CA_BUNDLE-bestand of map met certificaten van vertrouwde CA's. |
connection_cert | Certificaten aan clientzijde. U kunt een lokaal certificaat opgeven dat moet worden gebruikt als certificaat aan de clientzijde, als één bestand (met de persoonlijke sleutel en het certificaat) of als een tuple van de paden van beide bestanden. |
proxy's | Woordenlijsttoewijzingsprotocol of -protocol en hostnaam aan de URL van de proxy. |
Cookies | Dict- of CookieJar-object dat moet worden verzonden met de Request . |
connection_data_block_size | De blokgrootte van gegevens die via de verbinding worden verzonden. De standaardinstelling is 4096 bytes. |
Asynchroon transport
Het asynchrone transport is ontworpen als opt-in. AioHttp is een van de ondersteunde implementaties van asynchroon transport. Deze wordt niet standaard geïnstalleerd. U moet deze afzonderlijk installeren.
Gedeelde modules
MatchConditions
MatchConditions is een opsomming om overeenkomstvoorwaarden te beschrijven.
class MatchConditions(Enum):
Unconditionally = 1 # Matches any condition
IfNotModified = 2 # If the target object is not modified. Usually it maps to etag=<specific etag>
IfModified = 3 # Only if the target object is modified. Usually it maps to etag!=<specific etag>
IfPresent = 4 # If the target object exists. Usually it maps to etag='*'
IfMissing = 5 # If the target object does not exist. Usually it maps to etag!='*'
CaseInsensitiveEnumMeta
Een metaklasse ter ondersteuning van niet-hoofdlettergevoelige opsommingen.
from enum import Enum
from azure.core import CaseInsensitiveEnumMeta
class MyCustomEnum(str, Enum, metaclass=CaseInsensitiveEnumMeta):
FOO = 'foo'
BAR = 'bar'
Null Sentinel-waarde
Een falsy sentinel-object dat moet worden gebruikt om kenmerken zonder gegevens op te geven. Dit wordt geserialiseerd naar null
op de draad.
from azure.core.serialization import NULL
assert bool(NULL) is False
foo = Foo(
attr=NULL
)
Bijdragen
Wij verwelkomen bijdragen en suggesties voor dit project. Voor de meeste bijdragen moet u instemmen met een licentieovereenkomst voor bijdragers (CLA: Contributor License Agreement) waarin u verklaart dat u gerechtigd bent ons het recht te geven uw bijdrage te gebruiken, en dat u dit ook doet. Ga naar https://cla.microsoft.com voor meer informatie.
Wanneer u een pull-aanvraag indient, wordt met een CLA-bot automatisch bepaald of u een CLA moet verschaffen en wordt de pull-aanvraag dienovereenkomstig opgemaakt (bijvoorbeeld met een label of commentaar). Volg gewoon de instructies van de bot. U hoeft dit maar eenmaal te doen voor alle repo's waar gebruik wordt gemaakt van onze CLA.
Op dit project is de Microsoft Open Source Code of Conduct (Microsoft Open Source-gedragscode) van toepassing. Raadpleeg de Veelgestelde vragen over de gedragscode voor meer informatie of neem contact op met opencode@microsoft.com als u meer vragen of opmerkingen hebt.
Azure SDK for Python