Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En esta guía se incluyen los procedimientos recomendados para las soluciones creadas con la versión más reciente del SDK de Python para Azure Cosmos DB para NoSQL. Los procedimientos recomendados que se incluyen aquí ayudan a mejorar la latencia, mejorar la disponibilidad y aumentar el rendimiento general de las soluciones.
Configuración de la cuenta
Parámetros de configuración de la cuenta
| Parámetro | Predeterminado o restricción | Cuándo usar |
|---|---|---|
| Coubicación de regiones | Igual que la región de la aplicación | Reducción de la latencia |
| Replicación en varias regiones | Deshabilitado de manera predeterminada | Habilitar 2 o más regiones para la disponibilidad |
| Conmutación por error administrada por el servicio | Opcional | Habilitar para cargas de trabajo de producción |
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
Para obtener más información sobre cómo agregar varias regiones mediante el SDK de Python, consulte el tutorial de distribución global global.
Uso del SDK
Parámetros de uso del SDK
| Parámetro | Predeterminado o restricción | Cuándo usar |
|---|---|---|
| Versión del SDK | Más reciente disponible | Siempre para obtener un rendimiento óptimo |
| Instancia de CosmosClient | Una por aplicación | Reutilización durante toda la vida útil de la aplicación |
| ubicaciones preferidas | Ninguno | Optimización de lecturas y conmutación por error |
client = CosmosClient(
url,
credential,
preferred_locations=["East US", "West US"]
)
print(client.client_connection._preferred_locations)
# Expected: ['East US', 'West US']
Un error transitorio es un error que tiene una causa subyacente que pronto se resuelve por él mismo. Las aplicaciones que se conectan a la base de datos deberían crearse de modo que contemplen esos errores transitorios. Para controlarlos, implemente una lógica de reintento en el código en lugar de mostrarlas a los usuarios como errores de aplicación. El SDK tiene lógica integrada para controlar estos errores transitorios en solicitudes que se pueden reintentar, como operaciones de lectura o consulta. El SDK no puede reintentar las escrituras para errores transitorios, ya que las escrituras no son idempotentes. El SDK permite a los usuarios configurar la lógica de reintento para las limitaciones. Para más información sobre los errores en los que se debe reintentar, consulte la guía de aplicación resiliente.
Use el registro del SDK para capturar información de diagnóstico y solucionar problemas de latencia.
Cliente asíncrono
Requisitos del cliente asincrónico
| Requisito | Predeterminado o restricción | Cuándo usar |
|---|---|---|
| Ruta de importación | azure.cosmos.aio.CosmosClient |
Uso en marcos asincrónicos y bucles de eventos |
aiohttp dependencia |
No instalado de forma predeterminada | Instalar explícitamente: pip install aiohttp |
| Ciclo de vida del cliente | Debe cerrarse explícitamente | Utilice async with o llame a 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()
Cuándo usar asincronía vs sincronización
| Escenario | Cliente recomendado |
|---|---|
| Marcos web (FastAPI, Quart) | azure.cosmos.aio.CosmosClient |
| Serverless (Azure Functions async) | azure.cosmos.aio.CosmosClient |
| Scripts y trabajos por lotes | azure.cosmos.CosmosClient |
| Herramientas sencillas de la CLI | azure.cosmos.CosmosClient |
Advertencia
No use la sincronización CosmosClient dentro de un bucle de eventos asincrónico. El cliente de sincronización realiza llamadas de E/S de bloqueo que bloquean el bucle de eventos, degradan el rendimiento y pueden provocar interbloqueos en la aplicación.
Para obtener más información, consulte la sección asincrónica del README del SDK de Python.
Diseño de datos
Parámetros de diseño de datos
| Parámetro | Predeterminado o restricción | Cuándo usar |
|---|---|---|
| Tamaño del documento | N/A | Mantenerlo pequeño para reducir los costos de recursos compartidos (RU) |
| Caracteres de identificador | Sin caracteres especiales | Evitar un comportamiento inesperado |
| Rutas de indexación | Todas las rutas de acceso indexadas | Excluir rutas sin usar para escrituras más rápidas |
container_properties = {
"id": "items",
"indexingPolicy": {
"excludedPaths": [{"path": "/*"}]
}
}
print(container_properties["indexingPolicy"])
# Expected: excludedPaths configured
Para obtener más información, consulte Creación de índices mediante el ejemplo del SDK.
Características del host
Parámetros de características de host
| Parámetro | Predeterminado o restricción | Cuándo usar |
|---|---|---|
| Uso de CPU | <70% recomendado | Escalado vertical o horizontal si es alto |
| Redes aceleradas | Disabled | Habilitación en máquinas virtuales para un tráfico elevado |
| Tamaño de página de consulta | 100 elementos / 4 MB | Aumento para reducir los recorridos de ida y vuelta |
items = container.query_items(
query="SELECT * FROM c",
max_item_count=500
)
print("Page size set to 500")
# Expected: fewer round trips
Pasos siguientes
Para obtener más información sobre las sugerencias de rendimiento para Python SDK, consulte Sugerencias de rendimiento para Azure Cosmos DB Python SDK.
Para obtener más información sobre el diseño de la aplicación para el escalado y el alto rendimiento, consulte Particionamiento y escalado en Azure Cosmos DB.
Intentar planificar la capacidad para una migración a Azure Cosmos DB? Puede utilizar información sobre su clúster de bases de datos existente para la planificación de capacidad.
- Si lo único que sabe es el número de núcleos virtuales y servidores del clúster de bases de datos existente, consulte la información sobre el cálculo de unidades de solicitud mediante núcleos virtuales o CPU virtuales.
- Si conoce las tasas de solicitud típicas de la carga de trabajo de su base de datos actual, lea sobre cómo estimar unidades de solicitud utilizando el planificador de capacidad de Azure Cosmos DB