Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Consultas asíncronas

En esta guía, puedes aprender cómo realizar queries asincrónicas en Mongoid. Puede ejecutar queries de base de datos de forma asíncrona en segundo plano, lo que puede ser beneficioso si tu aplicación recupera documentos de varias colecciones.

Para programar una query asíncrona, llama al load_async método en una instancia Criteria, como se muestra en el siguiente código:

@active_bands = Band.where(active: true).load_async
@public_articles = Article.where(public: true).load_async

El código anterior programó las queries para su ejecución asíncrona. Luego puedes acceder a los resultados de las queries en tu vista como lo harías normalmente con las queries sincrónicas.

Incluso si programa una consulta para su ejecución asincrónica, podría ejecutarse sincrónicamente en el hilo del llamador. La siguiente lista describe posibles escenarios en los que esto podría ocurrir:

  • Si Mongoid completa la tarea asincrónica programada, devuelve los resultados.

  • Si Mongoid se inicia pero no completa la tarea, el hilo del que realiza la llamada se bloquea hasta que Mongoid termine la tarea.

  • Si Mongoid aún no ha iniciado una tarea, esta se elimina de la cola de ejecución y Mongoid ejecuta la query de manera sincrónica en el hilo que llama.

Nota

Aunque el método load_async devuelve un objeto Criteria, no realice ninguna operación en este objeto aparte de acceder a los resultados de la consulta. Mongoid programa la ejecución de la consulta inmediatamente después de llamar a load_async, por lo que los cambios posteriores en el objeto Criteria podrían no aplicarse.

Las consultas asíncronas están desactivadas por defecto. Cuando las queries asíncronos están deshabilitados, el método load_async realiza la query inmediatamente en el hilo actual, bloqueando según sea necesario. Por lo tanto, invocar load_async en una instancia de Criteria en esta situación es similar a invocar el método to_a para forzar la query.

Para habilitar la ejecución de consultas asincrónicas, debe configurar las siguientes opciones de configuración:

development:
...
options:
# Execute asynchronous queries using a global thread pool.
async_query_executor: :global_thread_pool
# Number of threads in the pool. The default is 4.
# global_executor_concurrency: 4

Para obtener más información sobre cómo configurar Mongoid en tu aplicación, consulta el Guía para conectar a MongoDB.

Para obtener más información sobre cómo realizar operaciones CRUD, consulte la guía de operaciones CRUD.

Volver

caché de query

En esta página