Azure-bibliotheken voor Python-gebruikspatronen
De Azure SDK voor Python bestaat uitsluitend uit veel onafhankelijke bibliotheken die worden vermeld in de Python SDK-pakketindex.
Alle bibliotheken delen bepaalde algemene kenmerken en gebruikspatronen, zoals de installatie en het gebruik van inline JSON voor objectargumenten.
Bibliotheekinstallatie
Als u een specifiek bibliotheekpakket wilt installeren, gebruikt u 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 haalt de nieuwste versie van een bibliotheek op in uw huidige Python-omgeving.
U kunt ook gebruiken pip om bibliotheken te verwijderen en specifieke versies te installeren, waaronder preview-versies. Zie Azure-bibliotheekpakketten voor Python installeren voor meer informatie.
Asynchrone bewerkingen
Veel bewerkingen die u aanroept via client- en beheerclientobjecten (zoals en ) retourneren een object van het type waarbij specifiek ComputeManagementClient.virtual_machines.begin_create_or_update is voor de bewerking in WebSiteManagementClient.web_apps.create_or_updateAzureOperationPoller[<type>]<type> kwestie.
Beide methoden zijn asynchroon. Het verschil in de methodenamen wordt veroorzaakt door versieverschillen. Oudere bibliotheken die niet zijn gebaseerd op azure.core gebruiken doorgaans met de naam create_or_update . Bibliotheken op basis van azure.core voegen het voorvoegsel toe aan methodenamen om beter aan te begin_ geven dat ze asynchroon zijn. Het migreren van oude code naar een nieuwere bibliotheek op basis van azure.core betekent doorgaans het toevoegen van het voorvoegsel aan methodenamen, omdat de meeste methodehandtekeningen begin_ hetzelfde blijven.
In beide gevallen betekent AzureOperationPoller een retourtype dat de bewerking asynchroon is. Daarom moet u de methode van die poller result aanroepen om te wachten tot de bewerking is uitgevoerd en het resultaat ervan te verkrijgen.
De volgende code, afkomstig uit Voorbeeld: Een web-appinrichten en implementeren, toont een voorbeeld van het gebruik van de poller om te wachten op een resultaat:
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()
In dit geval is de retourwaarde van van het type , wat betekent dat begin_create_or_updateAzureOperationPoller[Site] de retourwaarde van een poller.result()begin_create_or_update is.
Uitzonderingen
Over het algemeen treden er in de Azure-bibliotheken uitzonderingen op wanneer bewerkingen niet kunnen worden uitgevoerd zoals bedoeld, inclusief mislukte HTTP-aanvragen voor de Azure-REST API. Voor app-code kunt u blokken gebruiken try...except rond bibliotheekbewerkingen.
Raadpleeg de documentatie voor de bewerking in kwestie voor meer informatie over het type uitzonderingen dat kan worden aangetrokken.
Logboekregistratie
De meest recente Azure-bibliotheken gebruiken de standaardbibliotheek van Python logging om logboekuitvoer te genereren. U kunt het logboekregistratieniveau instellen voor afzonderlijke bibliotheken, groepen bibliotheken of alle bibliotheken. Zodra u een logboekstream-handler registreert, kunt u logboekregistratie inschakelen voor een specifiek clientobject of een specifieke bewerking. Zie Logboekregistratie in de Azure-bibliotheken voor meer informatie.
Proxyconfiguratie
Als u een proxy wilt opgeven, kunt u omgevingsvariabelen of optionele argumenten gebruiken. Zie How to configure proxies (Proxies configureren) voor meer informatie.
Optionele argumenten voor clientobjecten en -methoden
In de referentiedocumentatie van de bibliotheek ziet u vaak een argument of in de handtekening van een **kwargs**operation_config clientobjecten constructor of een specifieke bewerkingsmethode. Deze tijdelijke aanduidingen geven aan dat het object of de methode in kwestie aanvullende benoemde argumenten kan ondersteunen. Normaal gesproken geeft de referentiedocumentatie de specifieke argumenten aan die u kunt gebruiken. Er zijn ook enkele algemene argumenten die vaak worden ondersteund, zoals beschreven in de volgende secties.
Argumenten voor bibliotheken op basis van azure.core
Deze argumenten zijn van toepassing op de bibliotheken die worden vermeld in Python - Nieuwe bibliotheken.
| Naam | Type | Standaard | Beschrijving |
|---|---|---|---|
| logging_enable | booleaans | Niet waar | Schakelt logboekregistratie in. Zie Logboekregistratie in de Azure-bibliotheken voor meer informatie. |
| proxy's | dict | {} | URL's van proxyserver. Zie How to configure proxies (Proxies configureren) voor meer informatie. |
| use_env_settings | Booleaanse waarde | True | Indien waar, staat het gebruik van HTTP_PROXYHTTPS_PROXY omgevingsvariabelen en toe voor -proxies. Als false, worden de omgevingsvariabelen genegeerd. Zie How to configure proxies (Proxies configureren) voor meer informatie. |
| connection_timeout | int | 300 | De time-out in seconden voor het maken van een verbinding met Azure REST API eindpunten. |
| read_timeout | int | 300 | De time-out in seconden voor het voltooien van een Azure REST API bewerking (dat wil zeggen, wachten op een antwoord). |
| retry_total | int | 10 | Het aantal toegestane nieuwe pogingen voor het REST API aanroepen. Gebruik retry_total=0 om nieuwe proberen uit te schakelen. |
| retry_mode | Enum | Exponentiële | Timing van nieuwe poging wordt lineair of exponentieel toegepast. Als 'single' wordt gedaan, worden er met regelmatige tussenpozen nieuwe proberen gedaan. Als 'exponentieel', wacht elke nieuwe poging twee keer zolang de vorige poging. |
Afzonderlijke bibliotheken zijn niet verplicht om een van deze argumenten te ondersteunen. Raadpleeg daarom altijd de referentiedocumentatie voor elke bibliotheek voor meer informatie.
Argumenten voor niet-kernbibliotheken
| Naam | Type | Standaard | Beschrijving |
|---|---|---|---|
| Controleren | Booleaanse waarde | True | Controleer het SSL-certificaat. |
| Cert | Str | Geen | Pad naar het lokale certificaat voor verificatie aan de clientzijde. |
| timeout | int | 30 | Time-out voor het tot stand brengen van een serververbinding in seconden. |
| allow_redirects | booleaans | Niet waar | Schakel omleidingen in. |
| max_redirects | int | 30 | Maximum aantal toegestane omleidingen. |
| proxy's | dict | {} | URL van proxyserver. Zie How to configure proxies (Proxies configureren) voor meer informatie. |
| use_env_proxies | booleaans | Niet waar | Schakel het lezen van proxy-instellingen uit lokale omgevingsvariabelen in. |
| Pogingen | int | 10 | Totaal aantal toegestane nieuwe pogingen. |
| enable_http_logger | booleaans | Niet waar | Schakel logboeken van HTTP in de foutopsporingsmodus in. |
Inline JSON-patroon voor objectargumenten
Met veel bewerkingen in de Azure-bibliotheken kunt u objectargumenten uitdrukken als afzonderlijke objecten of als inline JSON.
Stel bijvoorbeeld dat u een ResourceManagementClient -object hebt waarmee u een resourcegroep maakt met de create_or_update methode ) . Het tweede argument voor deze methode is van het type ResourceGroup .
Als u wilt create_or_update aanroepen, kunt u rechtstreeks een discrete instantie ResourceGroup van maken met de vereiste argumenten ( in dit location geval):
rg_result = resource_client.resource_groups.create_or_update(
"PythonSDKExample-rg",
ResourceGroup(location="centralus")
)
U kunt ook dezelfde parameters doorgeven als inline JSON:
rg_result = resource_client.resource_groups.create_or_update(
"PythonAzureExample-rg",
{
"location": "centralus"
}
)
Wanneer u JSON gebruikt, converteren de Azure-bibliotheken automatisch de inline JSON naar het juiste objecttype voor het betreffende argument.
Objecten kunnen ook geneste objectargumenten hebben. In dat geval kunt u ook geneste JSON gebruiken.
Stel bijvoorbeeld dat u een exemplaar van het object hebt KeyVaultManagementClient en de methode create_or_update aanroept. In dit geval is het derde argument van het type VaultCreateOrUpdateParameters , dat zelf een argument van het type VaultProperties bevat. VaultPropertiesbevat op zijn beurt objectargumenten van het type Sku en list[AccessPolicyEntry] . Een Sku bevat een SkuName -object en elk object bevat een AccessPolicyEntryPermissions -object.
Als u wilt begin_create_or_update aanroepen met ingesloten objecten, gebruikt u code zoals de volgende (ervan tenant_id uitgaande dat en al zijn object_id gedefinieerd). U kunt ook de benodigde objecten maken vóór de functie-aanroep.
# 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()
Dezelfde aanroep met behulp van inline JSON wordt als volgt weergegeven:
# 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()
Omdat beide formulieren gelijkwaardig zijn, kunt u kiezen wat u wilt en ze zelfs verwisseld. (De volledige code voor deze voorbeelden vindt u op GitHub.)
Als uw JSON niet juist is gevormd, krijgt u meestal de fout DeserializationError: Unable to deserialize to object: type, AttributeError: 'str' object has no attribute 'get'. Een veelvoorkomende oorzaak van deze fout is dat u één tekenreeks voor een eigenschap op geeft wanneer de bibliotheek een genest JSON-object verwacht. Als u bijvoorbeeld in het vorige voorbeeld gebruikt, wordt deze fout gegenereerd omdat de parameter een object is dat "sku": "standard"skuSku inline object-JSON verwacht, in dit geval , dat wordt toegerekend aan { "name": "standard"} het SkuName verwachte type.
Volgende stappen
Nu u de algemene patronen begrijpt voor het gebruik van de Azure-bibliotheken voor Python, kunt u de volgende zelfstandige voorbeelden bekijken om specifieke scenario's voor beheer en clientbibliotheek te verkennen. U kunt deze voorbeelden in elke volgorde proberen, omdat ze niet sequentieel of onderling afhankelijk zijn.