Functions
- ndb.add_flow_exception(exc)
- Especifica que no se debe registrar una excepción, sino que forma parte del flujo normal del programa. Normalmente, al generar una excepción se escribe un mensaje de advertencia en los registros de la aplicación.
- exc
- Clase de excepción que no se debe registrar.
De forma predeterminada, no se registran las siguientes excepciones:
webob.exc.HTTPException
(y sus subclases)ndb.Rollback
- ndb.delete_multi(claves, **ctx_options)
- Elimina las entidades identificadas por la secuencia de claves proporcionada.
Argumentos
- claves
- Secuencia de teclas
- **ctx_options
- Opciones de contexto
- ndb.delete_multi_async(keys, **ctx_options)
- Elimina de forma asíncrona las entidades identificadas por la secuencia de claves proporcionada.
Argumentos
- claves
- Secuencia de teclas
- **ctx_options
- Opciones de contexto
Devuelve una lista de objetos
Future
. El resultado de cada futuro seráNone
. - ndb.get_multi(keys, **ctx_options)
- Obtiene las entidades identificadas por la secuencia de claves proporcionada.
Argumentos
- claves
- Secuencia de teclas
- **ctx_options
- Opciones de contexto
Devuelve una lista. Cada elemento de la lista es una instancia de Model o
None
si no se ha encontrado la clave. - ndb.get_multi_async(keys, **ctx_options)
- Obtiene de forma asíncrona las entidades identificadas por la secuencia de claves proporcionada.
Argumentos
- claves
- Secuencia de teclas
- **ctx_options
- Opciones de contexto
Devuelve una lista de objetos
Future
. El resultado de cada futuro es una instancia de Model oNone
si no se ha encontrado la clave. - ndb.in_transaction()
- Devuelve un valor booleano que indica si hay una transacción activa.
- @ndb.non_transactional
@ndb.non_transactional(allow_existing=True) - Decorador para asegurarse de que una función se ejecuta fuera de una transacción.
Argumentos:
- allow_existing
- Si
True
(valor predeterminado) y la función decorada se llama mediante código en una transacción, la función se ejecuta independientemente de la transacción. SiFalse
y si el código llama a la función decorada en una transacción, se genera una excepción.
- ndb.put_multi(entities, **ctx_options)
- Almacena una secuencia de instancias de Model.
Argumentos
- entities
- Secuencia de instancias de Model
- **ctx_options
- Opciones de contexto
Devuelve una lista con las claves almacenadas.
- ndb.put_multi_async(entities, **ctx_options)
- Almacena de forma asíncrona una secuencia de instancias de Model.
Argumentos
- entities
- Secuencia de instancias de Model
- **ctx_options
- Opciones de contexto
Devuelve una lista de objetos
Future
. El resultado de cada futuro será una clave almacenada. - ndb.transaction(callback, **ctx_options)
- Ejecuta una retrollamada en una transacción.
Argumentos
- devolución de llamada
- Función o tasklet al que se debe llamar
- **ctx_options
- Opciones de transacción
Devuelve lo que devuelva callback. Genera lo que genere callback o una excepción
TransactionFailedError
si la transacción falla.Para transferir argumentos a una función de retrollamada, usa una función lambda. Por ejemplo,
def my_callback(key, inc): ... transaction(lambda: my_callback(Key(...), 1))
- ndb.transaction_async(callback, **ctx_options)
- Ejecuta de forma asíncrona una retrollamada en una transacción.
Argumentos
- devolución de llamada
- Función o tasklet al que se debe llamar
- **ctx_options
- Opciones de transacción
Devuelve un
Future
. El futuro devuelve lo que devuelva callback o genera lo que genere callback o unTransactionFailedError
si la transacción falla.Para transferir argumentos a una función de retrollamada, usa una función lambda. Por ejemplo,
def my_callback(key, inc): ... transaction(lambda: my_callback(Key(...), 1))
- @ndb.transactional
@ndb.transactional(**ctx_options) - Decorador para que una función se ejecute automáticamente en una transacción.
Argumentos:
Este decorador puede tener opciones de transacción.
Argumentos
Opciones de contexto y opciones de transacción
Las opciones de contexto le permiten ejecutar operaciones de almacén de datos específicas con diferentes configuraciones. Por ejemplo, puede que quieras variar la política de lectura o el plazo de RPC de solicitudes concretas. Para ello, puedes enviar opciones de contexto a casi cualquier operación. Algunas funciones relacionadas con las transacciones usan opciones de transacción, que incluyen opciones adicionales además de un conjunto de opciones de contexto.
Aquí tienes algunos ejemplos de uso de las opciones de contexto. Para definir el plazo de RPC en 1 segundo al leer una entidad, puedes usar lo siguiente:
key.get(deadline=1)
Para definir el tiempo de espera de memcache en 30 segundos al escribir una entidad, puedes usar lo siguiente:
ent.put(ndb_memcache_timeout=30)
Para eliminar un elemento que se ha almacenado en caché y forzar su recarga, puedes usar lo siguiente:
key.delete(use_datastore=False)
Los argumentos de palabras clave especiales options
y config
(que tienen significados idénticos por motivos históricos) permiten especificar varias opciones como objeto Configuration. Puede ser un objeto ndb.ContextOptions
o, en el caso de las funciones y el decorador transaccionales, un objeto ndb.TransactionOptions
.
Por ejemplo:
key.get(options=ndb.ContextOptions(use_cache=True))
es equivalente a
key.get(use_cache=True)
.
Los parámetros de palabras clave pueden anular las opciones definidas en un objeto de opciones.
Estas son las opciones contextuales disponibles:
Opción | Tipo | Descripción |
---|---|---|
deadline | float
| Fecha límite de llamada para el almacén de datos, especificada como un número de segundos. De forma predeterminada, la llamada solo se interrumpe cuando se alcanza el plazo del controlador de solicitudes. |
read_policy
| ndb.EVENTUAL_CONSISTENCY
| Defina este valor en ndb.EVENTUAL_CONSISTENCY si, en lugar de esperar a que Datastore termine de aplicar los cambios a todos los resultados devueltos, quiere obtener resultados posiblemente no actualizados más rápido.
|
force_writes
| bool
| Especifica si una solicitud de escritura debe completarse correctamente aunque la aplicación sea de solo lectura. Esto solo se aplica a los periodos de solo lectura controlados por el usuario. |
use_cache | bool | Especifica si se deben almacenar entidades en la caché en proceso. Anula la política de caché en proceso de esta operación. |
use_memcache | bool | Especifica si se deben almacenar entidades en memcache. Anula la política de memcache para esta operación. |
use_datastore | bool | Especifica si se deben almacenar entidades en Datastore. Anula la política de Datastore para esta operación. |
memcache_timeout | int | Tiempo de vida máximo de las entidades en Memcache. Anula la política de tiempo de espera de Memcache para esta operación. |
max_memcache_items | int
| Tamaño máximo de lote para la función de creación automática de lotes de los métodos de caché de memoria Context.
Por ejemplo, con el tamaño predeterminado de max_memcache_items
(100), se combinarán hasta 100 operaciones de definición de memcache en una sola operación set_multi .
|
En algunas funciones relacionadas con las transacciones, se pueden usar las siguientes opciones de transacción (además de las opciones de contexto heredadas que se indican más arriba): | ||
Opción | Tipo | Descripción |
xg | bool
| Permitir transacciones entre grupos (XG ).
False de forma predeterminada.
|
propagation | int
| NDB ofrece asistencia limitada para las transacciones dentro de las transacciones, que se conocen como "transacciones anidadas". El parámetro de propagación controla lo que ocurre si tu código intenta iniciar una transacción anidada. La política de propagación de La política de propagación de El parámetro de propagación puede tener uno de los siguientes valores:
|
retries | int
| Número de veces que se debe volver a intentar automáticamente en caso de que se produzcan errores en las transacciones. Cero significa que se intenta una vez, pero no se vuelve a intentar. |
En algunos casos, las opciones se ignoran debido al almacenamiento en caché.
Por ejemplo, si especificas un plazo de RPC para una operación de lectura que se satisface desde la caché en contexto, se ignora el plazo.
Por otro lado, las opciones no reconocidas provocan que se genere TypeError
.
Las operaciones con diferentes opciones se agrupan cuando se aplica el procesamiento por lotes automático. Por ejemplo, si usas put_async()
para escribir algunas entidades con
deadline = 5
y otras sin especificar una fecha límite, y todas cumplen los requisitos para
el procesamiento automático por lotes, el procesador automático por lotes hará dos llamadas RPC independientes: una para el grupo de entidades con
deadline = 5
y otra para el otro grupo, aunque la fecha límite de la llamada RPC predeterminada también sea 5.
Esto se aplica aunque la opción especificada no sea pertinente para la operación RPC (por ejemplo, ndb_should_cache
).