Python için Azure kitaplıkları kullanım desenleri
Python için Azure SDK 'Sı, Python SDK paketi dizinindelistelenen, yalnızca birçok bağımsız kitaplığı oluşur.
Tüm kitaplıklar, yükleme ve nesne bağımsız değişkenleri için satır içi JSON kullanımı gibi belirli ortak özellikleri ve kullanım düzenlerini paylaşır.
Kitaplık Yükleme
Belirli bir kitaplık paketini yüklemek için şunu kullanın pip install :
# Install the management library for Azure Storage
pip install azure-mgmt-storage
# Install the client library for Azure Blob Storage
pip install azure-storage-blob
pip install geçerli Python ortamınızdaki bir kitaplığın en son sürümünü alır.
Ayrıca pip , önizleme sürümleri dahil olmak üzere kitaplıkları kaldırmak ve belirli sürümleri yüklemek için de kullanabilirsiniz. Daha fazla bilgi için bkz. Python Için Azure kitaplık paketleri nasıl yüklenir.
Zaman uyumsuz işlemler
İstemci ve yönetim istemci nesneleri (ve gibi) aracılığıyla çağıracağınız birçok işlem ComputeManagementClient.virtual_machines.begin_create_or_update , WebSiteManagementClient.web_apps.create_or_updateAzureOperationPoller[<type>]<type> söz konusu işleme özgü olan türünde bir nesne döndürür.
Bu yöntemlerin her ikisi de zaman uyumsuzdur. Yöntem adlarındaki fark, sürüm farklarından kaynaklanır. Azure. Core tabanlı olmayan eski kitaplıklar, genellikle gibi adlı bir kullanır create_or_update . Azure 'u temel alan kitaplıklar. Core, begin_ zaman uyumsuz olduklarını daha iyi göstermek için yöntem adlarına önek ekleyin. Eski kodu daha yeni bir Azure 'a geçirme. çekirdek tabanlı kitaplık genellikle begin_ , çoğu Yöntem imzası aynı kaldığı için ön eki yöntem adlarına ekleme anlamına gelir.
Her iki durumda da, AzureOperationPoller dönüş türü kesinlikle işlemin zaman uyumsuz olduğu anlamına gelir. Buna uygun olarak, result işlemin bitmesini beklemek ve sonucunu almak için bu Poller 'ın yöntemini çağırmanız gerekir.
Aşağıdaki kod örnek: bir Web uygulaması sağlayın ve dağıtın, bir sonuç için beklemek üzere Poller kullanmanın bir örneğini gösterir:
poller = app_service_client.web_apps.begin_create_or_update(RESOURCE_GROUP_NAME,
WEB_APP_NAME,
{
"location": LOCATION,
"server_farm_id": plan_result.id,
"site_config": {
"linux_fx_version": "python|3.8"
}
}
)
web_app_result = poller.result()
Bu durumda, öğesinin dönüş değeri begin_create_or_update türündedir AzureOperationPoller[Site] , yani dönüş değeri poller.result() bir begin_create_or_update nesnesidir.
Özel durumlar
Genel olarak Azure kitaplıkları, Azure REST API başarısız HTTP istekleri de dahil olmak üzere, işlemler istendiği gibi gerçekleştirilemelerden özel durumlar yükseltir. Uygulama kodu için, try...except kitaplık işlemlerinin çevresindeki blokları kullanabilirsiniz.
Ortaya çıkan özel durumların türü hakkında daha fazla bilgi için, söz konusu işlem için belgelere bakın.
Günlüğe Kaydetme
En son Azure kitaplıkları, logging günlük çıktısı oluşturmak Için Python Standart kitaplığını kullanır. Ayrı kitaplıklar, kitaplık grupları veya tüm kitaplıklar için günlüğe kaydetme düzeyini ayarlayabilirsiniz. Günlüğe kaydetme akışı işleyicisini kaydettiğinizde, belirli bir istemci nesnesi veya belirli bir işlem için günlük kaydını etkinleştirebilirsiniz. Daha fazla bilgi için bkz. Azure kitaplıklarında günlüğe kaydetme.
Ara sunucu yapılandırması
Proxy belirtmek için, ortam değişkenlerini veya isteğe bağlı bağımsız değişkenleri kullanabilirsiniz. Daha fazla bilgi için bkz. proxy 'leri yapılandırma.
İstemci nesneleri ve yöntemleri için isteğe bağlı bağımsız değişkenler
Kitaplık başvurusu belgelerinde, genellikle bir **kwargs**operation_config istemci nesne oluşturucusunun veya belirli bir işlem yönteminin imzasında bir veya bağımsız değişkeni görürsünüz. Bu yer tutucular, söz konusu nesnenin veya yöntemin adlandırılmış diğer bağımsız değişkenleri desteklediğini gösterir. Genellikle, başvuru belgeleri kullanabileceğiniz belirli bağımsız değişkenleri gösterir. Aşağıdaki bölümlerde açıklandığı gibi genellikle desteklenen bazı genel bağımsız değişkenler de vardır.
Azure. Core tabanlı kitaplıklar için bağımsız değişkenler
Bu bağımsız değişkenler Python-yeni kitaplıklardalistelenen kitaplıklar için geçerlidir.
| Ad | Tür | Varsayılan | Description |
|---|---|---|---|
| logging_enable | bool | Yanlış | Günlüğe kaydetmeyi etkinleştir. Daha fazla bilgi için bkz. Azure kitaplıklarında günlüğe kaydetme. |
| ara sunucular | dict | {} | Proxy sunucu URL 'Leri. Daha fazla bilgi için bkz. proxy 'leri yapılandırma. |
| use_env_settings | bool | Doğru | Doğru ise, HTTP_PROXYHTTPS_PROXY proxy 'ler için ve ortam değişkenlerinin kullanılmasına izin verir. Yanlışsa, ortam değişkenleri yok sayılır. Daha fazla bilgi için bkz. proxy 'leri yapılandırma. |
| connection_timeout | int | 300 | Azure REST API uç noktalarına bağlantı yapmak için saniye cinsinden zaman aşımı. |
| read_timeout | int | 300 | Bir Azure REST API işlemini tamamlamak için saniye cinsinden zaman aşımı (bir yanıt bekleniyor). |
| retry_total | int | 10 | REST API çağrısı için izin verilen yeniden deneme sayısı. retry_total=0Yeniden denemeleri devre dışı bırakmak için kullanın. |
| retry_mode | enum | simge | Yeniden deneme zamanlamasını doğrusal veya üstel bir şekilde uygular. ' Single ' ise, yeniden denemeler düzenli aralıklarla yapılır. ' Üstel ' ise, her yeniden deneme önceki yeniden deneme süresi kadar iki kez bekler. |
Tek tek kitaplıklar bu bağımsız değişkenlerden hiçbirini desteklemek için yükümlülüğü içermez, bu nedenle her bir kitaplık için her zaman tam Ayrıntılar için başvuru belgelerine başvurun.
Çekirdek olmayan kitaplıklar için bağımsız değişkenler
| Ad | Tür | Varsayılan | Description |
|---|---|---|---|
| verify | bool | Doğru | SSL sertifikasını doğrulayın. |
| cert | üstbilgisine | Hiçbiri | İstemci tarafı doğrulaması için yerel sertifikanın yolu. |
| timeout | int | 30 | Saniye cinsinden sunucu bağlantısı kurmak için zaman aşımı. |
| allow_redirects | bool | Yanlış | Yeniden yönlendirmeleri etkinleştirin. |
| max_redirects | int | 30 | İzin verilen en fazla yeniden yönlendirme sayısı. |
| ara sunucular | dict | {} | Proxy sunucusu URL 'SI. Daha fazla bilgi için bkz. proxy 'leri yapılandırma. |
| use_env_proxies | bool | Yanlış | Yerel ortam değişkenlerinden proxy ayarlarını okumayı etkinleştirin. |
| dene | int | 10 | İzin verilen yeniden deneme girişimlerinin toplam sayısı. |
| enable_http_logger | bool | Yanlış | Hata ayıklama modunda HTTP günlüklerini etkinleştirin. |
Nesne bağımsız değişkenleri için satır içi JSON kalıbı
Azure kitaplıkları içindeki birçok işlem, nesne bağımsız değişkenlerini ayrı nesneler olarak veya satır içi JSON olarak ifade etmek için izin verir.
Örneğin, ResourceManagementClient yöntemi ile bir kaynak grubu oluşturduğunuz bir nesneniz olduğunu varsayalım create_or_update . Bu yöntemin ikinci bağımsız değişkeni türündedir ResourceGroup .
Çağırmak için create_or_update , ResourceGroup doğrudan gerekli bağımsız değişkenlerle (Bu durumda), ayrı bir örneği oluşturabilirsiniz location :
rg_result = resource_client.resource_groups.create_or_update(
"PythonSDKExample-rg",
ResourceGroup(location="centralus")
)
Alternatif olarak, aynı parametreleri satır içi JSON olarak geçirebilirsiniz:
rg_result = resource_client.resource_groups.create_or_update(
"PythonAzureExample-rg",
{
"location": "centralus"
}
)
JSON kullanırken, Azure kitaplıkları, söz konusu bağımsız değişken için satır içi JSON 'u otomatik olarak uygun nesne türüne dönüştürür.
Nesneler de iç içe geçmiş nesne bağımsız değişkenlerine sahip olabilir, bu durumda iç içe geçmiş JSON 'u de kullanabilirsiniz.
Örneğin, nesnenin bir örneğine sahip olduğunuzu KeyVaultManagementClient ve metodunu çağırmanın olduğunu varsayalım create_or_update . Bu durumda, üçüncü bağımsız değişken türünde VaultCreateOrUpdateParameters bir bağımsız değişken içeren türüdür VaultProperties . VaultPropertiessırasıyla, ve türündeki nesne bağımsız değişkenlerini içerir Skulist[AccessPolicyEntry] . SkuSkuName , Bir nesnesi içerir ve her biri AccessPolicyEntry bir Permissions nesnesi içerir.
begin_create_or_updateKatıştırılmış nesnelerle çağırmak için, aşağıdaki gibi bir kod kullanın (varsayıldığında tenant_id ve object_id zaten tanımlanmış). İşlev çağrısından önce gerekli nesneleri de oluşturabilirsiniz.
# Provision a Key Vault using inline parameters
poller = keyvault_client.vaults.begin_create_or_update(
RESOURCE_GROUP_NAME,
KEY_VAULT_NAME_A,
VaultCreateOrUpdateParameters(
location = "centralus",
properties = VaultProperties(
tenant_id = tenant_id,
sku = Sku(
name="standard",
family="A"
),
access_policies = [
AccessPolicyEntry(
tenant_id = tenant_id,
object_id = object_id,
permissions = Permissions(
keys = ['all'],
secrets = ['all']
)
)
]
)
)
)
key_vault1 = poller.result()
Satır içi JSON kullanan aynı çağrı şu şekilde görünür:
# Provision a Key Vault using inline JSON
poller = keyvault_client.vaults.begin_create_or_update(
RESOURCE_GROUP_NAME,
KEY_VAULT_NAME_B,
{
'location': 'centralus',
'properties': {
'sku': {
'name': 'standard',
'family': 'A'
},
'tenant_id': tenant_id,
'access_policies': [{
'tenant_id': tenant_id,
'object_id': object_id,
'permissions': {
'keys': ['all'],
'secrets': ['all']
}
}]
}
}
)
key_vault2 = poller.result()
Her iki form da eşdeğer olduğundan, tercih ettiğiniz ve hatta bunları karıştırabilmeniz için bunu seçebilirsiniz. (Bu örneklerin tam kodu GitHubbulunabilir.)
JSON 'niz düzgün biçimlendirilmemiş ise, "DeserializationError: nesne seri durumdan çıkarılamıyor: tür, AttributeError: ' Str ' nesnesinin ' Get ' özniteliğine sahip bir özniteliği yok" hatasını alırsınız. Bu hatanın yaygın bir nedeni, kitaplığın iç içe geçmiş bir JSON nesnesi beklediği zaman bir özellik için tek bir dize sağlamayız. Örneğin, "sku": "standard" Önceki örnekte kullanılması bu hatayı oluşturur çünkü sku parametresi, Sku satır içi nesne JSON bekleyen bir nesne, bu durumda { "name": "standard"} Beklenen SkuName türle eşlenir.
Sonraki adımlar
Python için Azure kitaplıklarını kullanmaya ilişkin yaygın düzenleri anladığınıza göre, belirli yönetim ve istemci kitaplığı senaryolarını araştırmak için aşağıdaki tek başına örneklere bakın. Bu örnekleri, sıralı veya birbirine bağımlı olmayan herhangi bir sırada deneyebilirsiniz.