Aracılığıyla paylaş


Python için Azure Core paylaşılan istemci kitaplığı - sürüm 1.29.6

Azure Core, Python SDK istemci kitaplıkları için paylaşılan özel durumlar ve modüller sağlar. Bu kitaplıklar Python için Azure SDK Tasarım Yönergeleri'ni izler.

İstemci kitaplığı geliştiricisiyseniz daha fazla bilgi için lütfen istemci kitaplığı geliştirici başvurusuna başvurun .

Kaynak kodu | Paket (Pypi) | Paket (Conda) | API başvuru belgeleri

Bildirim

Python 2.7 için Azure SDK Python paketleri desteği 01 Ocak 2022'de sona erdi. Daha fazla bilgi ve soru için lütfen https://github.com/Azure/azure-sdk-for-python/issues/20691

Başlarken

Genellikle azure core'u yüklemeniz gerekmez; bunu kullanarak istemci kitaplıklarından birini yüklediğinizde yüklenir. Açıkça yüklemek istemeniz durumunda (örneğin, kendi istemci kitaplığınızı uygulamak için) burada bulabilirsiniz.

Önemli kavramlar

Azure Çekirdek Kitaplığı Özel Durumları

AzureError

AzureError tüm hatalar için temel özel durumdur.

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)

ileti , özel durumla ilişkilendirilecek herhangi bir iletidir (str).

args , özel duruma dahil edilecek tüm ek bağımsız değişkenlerdir.

kwargs , özel duruma dahil etmek için anahtar sözcük bağımsız değişkenleridir. Bir iç özel durum geçirmek için anahtar sözcük hatasını kullanın ve tamamlanmamış bir işleme devam etmek için belirteç başvurusu için continuation_token .

Aşağıdaki özel durumlar AzureError'dan devralınır:

ServiceRequestError

Hizmete istekte bulunmaya çalışılırken bir hata oluştu. İstek gönderilmedi.

ServiceResponseError

İstek gönderildi, ancak istemci yanıtı anlayamadı. Bağlantı zaman aşımına uğradı. Bu hatalar, bir kez etkili veya güvenli işlemler için yeniden denenebilir.

HttpResponseError

İstekte bulunuldu ve hizmetten başarılı olmayan bir durum kodu alındı.

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)

ileti , HTTP yanıt hata iletisidir (isteğe bağlı)

yanıt , HTTP yanıtıdır (isteğe bağlı).

kwargs , özel duruma dahil etmek için anahtar sözcük bağımsız değişkenleridir.

Aşağıdaki özel durumlar HttpResponseError'dan devralır:

DecodeError

Yanıt seri hale getirme sırasında oluşan bir hata.

IncompleteReadError

Tam ileti gövdesini almadan önce eş bağlantıyı kapatırsa bir hata oluştu.

ResourceExistsError

4xx durum koduyla bir hata yanıtı. Bu, doğrudan Azure çekirdek işlem hattı tarafından tetiklenmez.

ResourceNotFoundError

Genellikle 412 yanıtı (güncelleştirme için) veya 404 (alma/gönderme için) tarafından tetiklenen bir hata yanıtı.

ResourceModifiedError

Genellikle 412 Çakışması olan 4xx durum koduyla bir hata yanıtı. Bu, doğrudan Azure çekirdek işlem hattı tarafından tetiklenmez.

ResourceNotModifiedError

Durum kodu 304 olan bir hata yanıtı. Bu, doğrudan Azure çekirdek işlem hattı tarafından tetiklenmez.

ClientAuthenticationError

4xx durum koduyla bir hata yanıtı. Bu, doğrudan Azure çekirdek işlem hattı tarafından tetiklenmez.

TooManyRedirectsError

Yeniden yönlendirme denemesi sayısı üst sınırına ulaşıldığında bir hata oluştu. Yeniden yönlendirme sayısı üst sınırı RedirectPolicy'de yapılandırılabilir.

class TooManyRedirectsError(HttpResponseError):
    def __init__(self, history, *args, **kwargs):
        self.history = history
        message = "Reached maximum redirect attempts."
        super(TooManyRedirectsError, self).__init__(message, *args, **kwargs)

geçmiş , yeniden yönlendirilen isteklerle sonuçlanan istekleri/yanıtları belgemek için kullanılır.

args , özel duruma dahil edilecek tüm ek bağımsız değişkenlerdir.

kwargs , özel duruma dahil etmek için anahtar sözcük bağımsız değişkenleridir.

StreamConsumedError

veya yanıt akışı tüketildikten sonra akışına azure.core.rest.HttpResponseazure.core.rest.AsyncHttpResponse erişmeye çalıştığınızda bir hata oluştu.

StreamClosedError

yanıt akışı kapatıldıktan sonra veya azure.core.rest.AsyncHttpResponse akışına azure.core.rest.HttpResponse erişmeye çalıştığınızda bir hata oluştu.

ResponseNotReadError

önce yanıtın contentazure.core.rest.HttpResponse bayt cinsinden veya azure.core.rest.AsyncHttpResponse okumadan önce öğesine erişmeye çalıştığınızda bir hata oluştu.

Yapılandırmalar

Yöntemleri çağırırken, bazı özellikler kwargs bağımsız değişkenleri olarak geçirilerek yapılandırılabilir.

Parametreler Description
Üstbilgi HTTP İsteği üst bilgileri.
request_id Üst bilgi içine eklenecek istek kimliği.
user_agent Belirtilirse, bu kullanıcı aracısı dizesinin önüne eklenir.
logging_enable İşlem başına etkinleştirmek için kullanın. varsayılan olarak Falseayarlanır.
Günlükçü Belirtilirse, bilgileri günlüğe kaydetmek için kullanılır.
response_encoding Bu hizmet için biliniyorsa kullanılacak kodlama (otomatik algılamayı devre dışı bırakır).
ara sunucular Protokolü veya protokolü ve ana bilgisayar adını ara sunucu URL'sine eşler.
raw_request_hook Geri çağırma işlevi. İstek üzerine çağrılır.
raw_response_hook Geri çağırma işlevi. Yanıtta çağrılır.
network_span_namer Span adını özelleştirmek için çağrılabilen bir ad.
tracing_attributes Oluşturulan tüm aralıklarda ayarlanacağı öznitelikler.
permit_redirects İstemcinin yeniden yönlendirmelere izin verip vermediği. varsayılan olarak Trueayarlanır.
redirect_max İzin verilen en yüksek yeniden yönlendirme sayısı. varsayılan olarak 30ayarlanır.
retry_total İzin vermek için toplam yeniden deneme sayısı. Diğer sayılardan önceliklidir. Varsayılan değer 10 olarak belirlenmiştir.
retry_connect Yeniden denenecek bağlantıyla ilgili hataların sayısı. Bunlar, istek uzak sunucuya gönderilmeden önce ortaya çıkan hatalardır ve sunucuyu isteği işlemek için tetiklemediğini varsayarız. Varsayılan değer 3 olarak belirlenmiştir.
retry_read Okuma hatalarında yeniden deneme sayısı. İstek sunucuya gönderildikten sonra bu hatalar oluşur, bu nedenle isteğin yan etkileri olabilir. Varsayılan değer 3 olarak belirlenmiştir.
retry_status Hatalı durum kodlarının kaç kez yeniden denenebileceği. Varsayılan değer 3 olarak belirlenmiştir.
retry_backoff_factor İkinci denemeden sonra girişimler arasında uygulanacak bir geri alma faktörü (çoğu hata gecikme olmadan ikinci bir denemeyle hemen çözülür). Yeniden deneme ilkesi şu süre boyunca uyku moduna alır: {backoff factor} * (2 ** ({number of total retries} - 1)) saniye. backoff_factor 0,1 ise yeniden denemeler arasında [0,0s, 0,2s, 0,4s, ...] için yeniden deneme uyku moduna alır. 0.8 varsayılan değerdir.
retry_backoff_max İzin süresi üst sınırı. Varsayılan değer saniyedir 120 (2 dakika).
retry_mode Denemeler arasındaki sabit veya üstel gecikme, varsayılan değerdir Exponential.
timeout saniye cinsinden işlem için zaman aşımı ayarı varsayılan değer 604800s (7 gün).
connection_timeout Bağlantı zaman aşımı için saniyeler içinde tek bir kayan nokta. Varsayılan olarak saniyedir 300 .
read_timeout Okuma zaman aşımı için saniyeler içinde tek bir kayan nokta. Varsayılan olarak saniyedir 300 .
connection_verify SSL sertifikası doğrulaması. Varsayılan olarak etkindir. Devre dışı bırakmak için False olarak ayarlayın; alternatif olarak, güvenilen CA'ların sertifikalarına sahip bir CA_BUNDLE dosyasının veya dizinin yoluna ayarlanabilir.
connection_cert İstemci tarafı sertifikaları. İstemci tarafı sertifikası olarak, tek bir dosya (özel anahtarı ve sertifikayı içeren) veya her iki dosyanın yolunun bir tanımlama grubu olarak kullanılacak yerel bir sertifika belirtebilirsiniz.
ara sunucular Proxy'nin URL'sine sözlük eşleme protokolü veya protokolü ve ana bilgisayar adı.
Kurabiye ile Requestgönderilecek Dict veya CookieJar nesnesi.
connection_data_block_size Bağlantı üzerinden gönderilen verilerin blok boyutu. Varsayılan olarak bayt değerini alır 4096 .

Zaman uyumsuz aktarım

Zaman uyumsuz aktarım, kabul edilecek şekilde tasarlanmıştır. AioHttp , zaman uyumsuz taşımanın desteklenen uygulamalarından biridir. Varsayılan olarak yüklenmez. Ayrı olarak yüklemeniz gerekir.

Paylaşılan modüller

MatchConditions

MatchConditions, eşleştirme koşullarını açıklayan bir sabit listesidir.

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

Büyük/küçük harfe duyarlı olmayan sabit listelerini desteklemek için bir meta sınıf.

from enum import Enum

from azure.core import CaseInsensitiveEnumMeta

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

Null Sentinel Değeri

Veri içermeyen öznitelikleri belirtmek için kullanılması gereken sahte bir sentinel nesnesi. Bu, kabloda seri hale null getirilir.

from azure.core.serialization import NULL

assert bool(NULL) is False

foo = Foo(
    attr=NULL
)

Katkıda bulunma

Bu proje, katkı ve önerilere açıktır. Çoğu durumda, sağladığınız katkıyı kullanmamız için bize hak tanıma hakkına sahip olduğunuzu ve bu hakkı bize tanıdığınızı bildiren bir Katkıda Bulunan Lisans Sözleşmesi’ni (CLA) kabul etmeniz gerekir. Ayrıntılar için bkz. https://cla.microsoft.com.

Bir çekme isteği gönderdiğinizde, CLA robotu bir CLA sağlamanız gerekip gerekmediğini otomatik olarak belirler ve çekme isteğini uygun şekilde donatır (örn. etiket, açıklama). Robot tarafından sağlanan yönergeleri izlemeniz yeterlidir. Bu işlemi, CLA’mızı kullanarak tüm depolarda yalnızca bir kere yapmanız gerekir.

Bu proje Microsoft Open Source Code of Conduct (Microsoft Açık Kaynak Kullanım Kuralları) belgesinde listelenen kurallara uygundur. Daha fazla bilgi için Kullanım Kuralları hakkında SSS bölümüne bakın veya başka soru ya da görüşleriniz olursa opencode@microsoft.com ile iletişime geçin.