Delen via


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 604800s (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.