Python 2 ya no es compatible con la comunidad. Te recomendamos que migres las apps de Python 2 a Python 3.

Coherencia de datos en consultas de Datastore

Niveles de coherencia de datos

Las consultas en Datastore pueden arrojar resultados en uno de los dos niveles de coherencia:

  • Las consultas con coherencia sólida garantizan que los resultados incluyan la información más reciente, pero pueden tardar más en completarse.
  • Coherencia eventual: Las consultas, en general, se ejecutan más rápido, pero a veces pueden mostrar resultados obsoletos.

En una consulta de coherencia eventual, se accede a los índices utilizados para reunir los resultados con coherencia eventual. Por lo tanto, esas consultas, a veces, pueden mostrar entidades que ya no coinciden con los criterios originales de la consulta, al tiempo que las consultas de coherencia sólida siempre son coherentes entre las transacciones. Consulta el artículo Aislamiento de transacción en App Engine para obtener más información sobre cómo se actualizan las entidades y los índices.

Coherencia de datos de consulta de Datastore

Las consultas muestran sus resultados con distintos niveles de garantía de coherencia, según la naturaleza de la consulta.

  • Según la configuración predeterminada, las consultas principales (las que están dentro de un grupo de entidad) usan la coherencia sólida. Sin embargo, se puede modificar la política de lectura de Datastore (detallada a continuación) para hacer que usen la coherencia eventual.
  • Las consultas no principales siempre son de coherencia eventual.

La obtención de una entidad por clave, también denominada "búsqueda por clave", es de coherencia sólida.

Configura la política de lectura de Datastore

Para mejorar el rendimiento, puedes configurar la política de lectura de Datastore de modo que todas las lecturas y consultas tengan una coherencia eventual. (La API también te permite establecer de forma explícita una política de coherencia sólida, pero esta configuración no tendrá efectos prácticos, ya que las consultas no principales son siempre de coherencia eventual sin importar la política).

También puede establecer la fecha límite de llamada de Datastore, que es el tiempo máximo, en segundos, que la aplicación esperará para que Datastore muestre un resultado antes de abortar con un error. El plazo predeterminado es de 60 segundos. Actualmente no se puede establecer un plazo más largo, pero sí puedes reducirlo a fin de asegurarte de que una operación determinada falle rápido (por ejemplo, para mostrarle una respuesta más rápida al usuario).

Para establecer la política de lectura de Datastore y la fecha límite de la llamada en Python, los pasa como argumentos a los métodos run(), get(), fetch() y count() de clase Query o GqlQuery. Por ejemplo:

for result in Employee.all().run(limit=5,
                                 read_policy=db.EVENTUAL_CONSISTENCY,
                                 deadline=5):
  # Body of iterative loop

¿Qué sigue?