Share via


Delat Azure Core-klientbibliotek för Python – version 1.29.6

Azure Core tillhandahåller delade undantag och moduler för Python SDK-klientbibliotek. De här biblioteken följer Riktlinjerna för Azure SDK-design för Python .

Om du är klientbiblioteksutvecklare kan du läsa mer i referensen för klientbiblioteksutvecklare .

Källkod | Paket (Pypi) | Paket (Conda) | API-referensdokumentation

Friskrivning

Stöd för Azure SDK Python-paket för Python 2.7 har upphört den 1 januari 2022. Mer information och frågor finns i https://github.com/Azure/azure-sdk-for-python/issues/20691

Komma igång

Normalt behöver du inte installera Azure Core. det installeras när du installerar ett av klientbiblioteken med hjälp av det. Om du vill installera det explicit (till exempel för att implementera ditt eget klientbibliotek) kan du hitta det här.

Viktiga begrepp

Undantag för Azure Core-bibliotek

AzureError

AzureError är det grundläggande undantaget för alla fel.

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)

meddelande är ett meddelande (str) som ska associeras med undantaget.

args är eventuella ytterligare args som ska inkluderas med undantag.

kwargs är nyckelordsargument som ska inkluderas med undantaget. Använd nyckelordsfelet för att skicka ett internt undantag och continuation_token för en tokenreferens för att fortsätta en ofullständig åtgärd.

Följande undantag ärver från AzureError:

ServiceRequestError

Ett fel uppstod när en begäran skulle skickas till tjänsten. Ingen begäran skickades.

ServiceResponseError

Begäran skickades, men klienten kunde inte förstå svaret. Anslutningen kan ha överskriden tidsgräns. Dessa fel kan göras om för idempotent eller säkra åtgärder.

HttpResponseError

En begäran gjordes och en statuskod som inte lyckades togs emot från tjänsten.

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)

meddelande är HTTP-svarsfelmeddelandet (valfritt)

svar är HTTP-svaret (valfritt).

kwargs är nyckelordsargument som ska inkluderas med undantaget.

Följande undantag ärver från HttpResponseError:

DecodeError

Ett fel uppstod under svars-de-serialisering.

IncompleteReadError

Ett fel uppstod om peer stänger anslutningen innan vi har fått hela meddelandetexten.

ResourceExistsError

Ett felsvar med statuskoden 4xx. Detta genereras inte direkt av Azure Core-pipelinen.

ResourceNotFoundError

Ett felsvar som vanligtvis utlöses av ett 412-svar (för uppdatering) eller 404 (för get/post).

ResourceModifiedError

Ett felsvar med statuskoden 4xx, vanligtvis 412 Konflikt. Detta genereras inte direkt av Azure Core-pipelinen.

ResourceNotModifiedError

Ett felsvar med statuskod 304. Detta genereras inte direkt av Azure Core-pipelinen.

ClientAuthenticationError

Ett felsvar med statuskoden 4xx. Detta genereras inte direkt av Azure Core-pipelinen.

TooManyRedirectsError

Ett fel uppstod när det maximala antalet omdirigeringsförsök har uppnåtts. Den maximala mängden omdirigeringar kan konfigureras i 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)

historik används för att dokumentera de begäranden/svar som resulterade i omdirigerade begäranden.

args är eventuella ytterligare args som ska inkluderas med undantag.

kwargs är nyckelordsargument som ska inkluderas med undantaget.

StreamConsumedError

Ett fel uppstod om du försöker komma åt strömmen av azure.core.rest.HttpResponse eller azure.core.rest.AsyncHttpResponse när svarsströmmen har förbrukats.

StreamClosedError

Ett fel uppstod om du försöker komma åt strömmen för azure.core.rest.HttpResponse eller azure.core.rest.AsyncHttpResponse när svarsströmmen har stängts.

ResponseNotReadError

Ett fel uppstod om du försöker komma åt content av azure.core.rest.HttpResponse eller azure.core.rest.AsyncHttpResponse innan du läser i svarets byte först.

Konfigurationer

När du anropar metoderna kan vissa egenskaper konfigureras genom att skicka in som kwargs-argument.

Parametrar Description
Headers HTTP-begäranderubrikerna.
request_id Begärande-ID:t som ska läggas till i huvudet.
User_agent Om detta anges läggs detta till framför användaragentsträngen.
logging_enable Använd för att aktivera per åtgärd. Standardvärdet är False.
Logger Om den anges används den för att logga information.
response_encoding Den kodning som ska användas om den är känd för den här tjänsten (inaktiverar automatisk identifiering).
proxyservrar Mappar protokoll eller protokoll och värdnamn till proxyns URL.
raw_request_hook Återanropsfunktion. Anropas på begäran.
raw_response_hook Återanropsfunktion. Anropas vid svar.
network_span_namer En anropsbar för att anpassa span-namnet.
tracing_attributes Attribut som ska anges för alla skapade intervall.
permit_redirects Om klienten tillåter omdirigeringar. Standardvärdet är True.
redirect_max Maximalt antal tillåtna omdirigeringar. Standardvärdet är 30.
retry_total Totalt antal återförsök som ska tillåtas. Har företräde framför andra antal. Standardvärdet är 10.
retry_connect Hur många anslutningsrelaterade fel som ska försöka igen. Det här är fel som uppstår innan begäran skickas till fjärrservern, vilket vi antar inte har utlöst servern för att bearbeta begäran. Standardvärdet är 3.
retry_read Hur många gånger du försöker igen vid läsfel. Dessa fel utlöses efter att begäran skickades till servern, så begäran kan ha biverkningar. Standardvärdet är 3.
retry_status Hur många gånger du försöker igen med felaktiga statuskoder. Standardvärdet är 3.
retry_backoff_factor En backoff-faktor som ska tillämpas mellan försök efter det andra försöket (de flesta fel löses omedelbart med ett andra försök utan fördröjning). Återförsöksprincipen kommer att ligga i viloläge i: {backoff factor} * (2 ** ({number of total retries} - 1)) sekunder. Om backoff_factor är 0,1 kommer återförsöket att viloläge för [0,0s, 0,2s, 0,4s, ...] mellan återförsök. Standardvärdet är 0.8.
retry_backoff_max Maximal ledighetstid. Standardvärdet är 120 sekunder (2 minuter).
retry_mode Fast eller exponentiell fördröjning mellan försök är Exponentialstandardvärdet .
timeout Tidsgränsinställningen för åtgärden i sekunder är 604800standardvärdet s (7 dagar).
connection_timeout En enda flyttal i sekunder för tidsgränsen för anslutningen. Standardvärdet är 300 sekunder.
read_timeout En enda flyttal i sekunder för tidsgränsen för läsning. Standardvärdet är 300 sekunder.
connection_verify Verifiering av SSL-certifikat. Aktiverat som standard. Ställ in på Falskt om du vill inaktivera. Alternativt kan du ange sökvägen till en CA_BUNDLE fil eller katalog med certifikat för betrodda certifikatutfärdare.
connection_cert Certifikat på klientsidan. Du kan ange ett lokalt certifikat som ska användas som certifikat på klientsidan, som en enda fil (som innehåller den privata nyckeln och certifikatet) eller som en tuppel av båda filernas sökvägar.
proxyservrar Ordlistemappningsprotokoll eller protokoll och värdnamn till proxyns URL.
Cookies Dict- eller CookieJar-objekt som ska skickas Requestmed .
connection_data_block_size Blockstorleken för data som skickas över anslutningen. Standardvärdet är 4096 byte.

Async-transport

Async-transporten är utformad för att vara anmäld. AioHttp är en av de implementeringar som stöds av asynkron transport. Den är inte installerad som standard. Du måste installera den separat.

Delade moduler

MatchConditions

MatchConditions är en uppräkning som beskriver matchningsvillkor.

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

En metaklass som stöder skiftlägesokänsliga uppräkningar.

from enum import Enum

from azure.core import CaseInsensitiveEnumMeta

class MyCustomEnum(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    FOO = 'foo'
    BAR = 'bar'

Null Sentinel-värde

Ett falsy sentinel-objekt som ska användas för att ange attribut utan data. Detta serialiseras till null på tråden.

from azure.core.serialization import NULL

assert bool(NULL) is False

foo = Foo(
    attr=NULL
)

Bidra

Det här projektet välkomnar bidrag och förslag. Merparten av bidragen kräver att du godkänner ett licensavtal för bidrag, där du deklarerar att du har behörighet att bevilja oss rättigheten att använda ditt bidrag, och att du dessutom uttryckligen gör så. Mer information finns på https://cla.microsoft.com.

När du skickar en pull-förfrågan avgör en CLA-robot automatiskt om du måste tillhandahålla ett licensavtal för bidrag med lämplig PR (t.ex. etikett eller kommentar). Följ bara robotens anvisningar. Du behöver bara göra detta en gång för alla repor som använder vårt licensavtal för bidrag.

Det här projektet använder sig av Microsofts uppförandekod för öppen källkod. Du hittar mer information i Vanliga frågor om uppförandekod eller kontakta opencode@microsoft.com för ytterligare frågor eller kommentarer.