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.HttpResponse
azure.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 content
azure.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 False ayarlanı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 True ayarlanır. |
redirect_max | İzin verilen en yüksek yeniden yönlendirme sayısı. varsayılan olarak 30 ayarlanı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 604800 s (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 Request gö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.
Azure SDK for Python