Metodtips för Python SDK i Azure Cosmos DB för NoSQL

Den här guiden innehåller metodtips för lösningar som skapats med den senaste versionen av Python SDK för Azure Cosmos DB för NoSQL. De bästa metoderna som ingår här hjälper till att förbättra svarstiden, förbättra tillgängligheten och öka den övergripande prestandan för dina lösningar.

Kontokonfiguration

Kontokonfigurationsparametrar

Parameter Förval eller begränsning När det bör användas
Regionell samlokalisering Samma som appregion Minska svarstiden
Replikering i flera regioner Inaktiverad som standard Aktivera 2+ regioner för tillgänglighet
Tjänsthanterad redundans Optional Aktivera för produktionsarbetsbelastningar
from azure.cosmos import CosmosClient
client = CosmosClient(url, credential)
print(client.client_connection._global_endpoint_manager.write_endpoint)
# Expected: write endpoint resolves to configured write region

Mer information om hur du lägger till flera regioner med hjälp av Python SDK finns i självstudien om global distribution.

SDK-användning

SDK-användningsparametrar

Parameter Förval eller begränsning När det bör användas
SDK-version Senaste tillgängliga Alltid för optimala prestanda
CosmosClient-instans Ett per app Återanvändning under appens livslängd
föredragna_placeringar Ingen Optimera läsningar och redundans
client = CosmosClient(
    url,
    credential,
    preferred_locations=["East US", "West US"]
)
print(client.client_connection._preferred_locations)
# Expected: ['East US', 'West US']

Ett tillfälligt fel är ett fel som har en underliggande orsak som snart löser sig själv. Program som ansluter till databasen bör skapas för att förvänta sig dessa tillfälliga fel. För att hantera dem implementerar du logik för återförsök i koden i stället för att visa dem för användare som programfel. SDK:n har inbyggd logik för att hantera dessa tillfälliga fel vid återförsöksbara begäranden som läs- eller frågeåtgärder. SDK:t kan inte försöka igen vid skrivningar för tillfälliga fel eftersom skrivningar inte är idempotenter. SDK ger användarna möjlighet att konfigurera omförsökslogik för hastighetsbegränsningar. För mer information om vilka fel du ska försöka igen på, se vägledning för motståndskraftiga applikationer.

Använd SDK-loggning för att samla in diagnostikinformation och felsöka problem med svarstid.

Asynkron klient

Asynkrona klientkrav

Krav Förval eller begränsning När det bör användas
Importera sökväg azure.cosmos.aio.CosmosClient Använda i asynkrona ramverk och händelseloopar
aiohttp Beroende Inte installerad som standard Installera explicit: pip install aiohttp
Klientlivscykel Måste stängas uttryckligen Använda async with eller anropa await client.close()
from azure.cosmos.aio import CosmosClient

# Preferred: use async with to manage lifecycle automatically
async with CosmosClient(url, credential) as client:
    database = client.get_database_client("mydb")
    container = database.get_container_client("mycontainer")
    item = await container.read_item(item="id1", partition_key="pk1")

# Alternative: manage lifecycle manually
client = CosmosClient(url, credential)
try:
    database = client.get_database_client("mydb")
    container = database.get_container_client("mycontainer")
    item = await container.read_item(item="id1", partition_key="pk1")
finally:
    await client.close()

När du ska använda async vs sync

Scenario Rekommenderad klient
Webbramverk (FastAPI, Quart) azure.cosmos.aio.CosmosClient
Serverlös (Azure Functions asynkron) azure.cosmos.aio.CosmosClient
Skript och batchjobb azure.cosmos.CosmosClient
Enkla CLI-verktyg azure.cosmos.CosmosClient

Varning

Använd inte synkroniseringen CosmosClient i en asynkron händelseloop. Synkroniseringsklienten gör blockerande I/O-anrop som blockerar händelseloopen, försämrar prestanda och potentiellt orsakar dödlägen i ditt program.

Mer information finns i avsnittet Python SDK README async.

Datadesign

Datadesignparametrar

Parameter Förval eller begränsning När det bör användas
Dokumentstorlek N/A Håll dig liten för att minska RU-kostnaden
Identifierartecken Inga speciella tecken Undvik oväntat beteende
Indexeringsvägar Alla sökvägar indexerade Exkludera oanvända sökvägar för snabbare skrivningar
container_properties = {
    "id": "items",
    "indexingPolicy": {
        "excludedPaths": [{"path": "/*"}]
    }
}
print(container_properties["indexingPolicy"])
# Expected: excludedPaths configured

Mer information finns i skapa index med SDK-exemplet.

Värdens egenskaper

Parametrar för värdkarakteristika

Parameter Förval eller begränsning När det bör användas
CPU-användning <70% rekommenderas Skala upp eller ut vid hög belastning
Accelererat nätverk Inaktiverad Aktivera på virtuella datorer för hög trafik
Frågesidans storlek 100 objekt/4 MB Öka för att minska tur och retur
items = container.query_items(
    query="SELECT * FROM c",
    max_item_count=500
)
print("Page size set to 500")
# Expected: fewer round trips

Nästa steg

Mer information om prestandatips för Python SDK finns i Prestandatips för Azure Cosmos DB Python SDK.

Mer information om hur du utformar ditt program för skalning och höga prestanda finns i Partitionering och skalning i Azure Cosmos DB.

Försöker du planera kapacitet för en migrering till Azure Cosmos DB? Du kan använda information om ditt befintliga databaskluster för kapacitetsplanering.