Docs Menu
Docs Home
/ /

APIs asíncronas y síncronas

En esta guía, puede aprender sobre el controlador Rust APIasíncronas y síncronas. Esta guía explica cómo habilitar las API disponibles y estructurar el código para usar cada una.

El controlador Rust admite tokio y async-std, dos entornos de ejecución asíncronos populares. De forma predeterminada, el controlador utiliza el entorno de ejecución asíncrono tokio, pero puede seleccionar un entorno de ejecución específico añadiendo indicadores de características a la dependencia mongodb en su archivo Cargo.toml.

El controlador también incluye una API síncrona para casos de uso que requieren bloqueo o cuando no se requiere paralelismo. Puede seleccionar la API síncrona añadiendo indicadores de función a la dependencia mongodb en su archivo Cargo.toml.

El controlador usa el entorno de ejecución tokio de forma predeterminada. Puede elegir un entorno de ejecución explícitamente añadiendo los indicadores de función "tokio-runtime" o "async-std-runtime" a la dependencia mongodb.

Seleccione una de las siguientes pestañas para ver cómo agregar indicadores de características para cada caja correspondiente:

[dependencies.mongodb]
version = "2.8.2"
features = ["tokio-runtime"]
[dependencies.mongodb]
version = "2.8.2"
default-features = false
features = ["async-std"]

Para obtener más información sobre cómo instalar el controlador y agregar indicadores de funciones, consulte la Paso de descarga e instalación del inicio rápido.

El siguiente código utiliza el módulo task del paquete tokio para crear tareas simultáneas e independientes para múltiples operaciones de datos:

let client = Client::with_uri_str("<connection string>").await?;
let some_data = doc! { "title": "1984", "author": "George Orwell" };
for i in 0..5 {
let client_ref = client.clone();
let somedata_ref = some_data.clone();
task::spawn(async move {
let collection = client_ref
.database("items")
.collection::<Document>(&format!("coll{}", i));
collection.insert_one(somedata_ref, None).await
});
}

El controlador también proporciona una API síncrona de bloqueo. Para usar la API síncrona, agregue el indicador de función "sync" o "tokio-sync" a la dependencia mongodb.

Seleccione una de las siguientes pestañas para ver cómo agregar indicadores de características para cada caja correspondiente:

[dependencies.mongodb]
version = "2.8.2"
default-features = false
features = ["sync"]
[dependencies.mongodb]
version = "2.8.2"
default-features = false
features = ["tokio-sync"]

Al usar la API síncrona, utilice los tipos del módulo mongodb::sync para realizar operaciones. El siguiente código usa el módulo sync para insertar datos en una colección mediante la API síncrona. Cuando el método insert_one se ejecuta dentro del bucle for, el controlador espera a que se complete cada solicitud antes de continuar.

use mongodb::sync::Client;
fn main() {
let client = Client::with_uri_str("<connection string>")?;
let some_data = doc! { "title": "1984", "author": "George Orwell" };
for i in 0..5 {
let client_ref = client.clone();
let somedata_ref = some_data.clone();
let collection = client_ref
.database("items")
.collection::<Document>(&format!("coll{}", i));
collection.insert_one(somedata_ref, None);
}
}

Puede usar API asíncronas y síncronas en la misma aplicación. Por ejemplo, para habilitar ambos entornos de ejecución tokio, puede agregar la dependencia tokio a su lista de dependencias y el indicador "tokio-sync" a la dependencia mongodb:

[dependencies]
futures = "0.3.28"
tokio = {version = "1.32.0", features = ["full"]}
[dependencies.mongodb]
version = "2.8.2"
features = ["tokio-sync"]

Para obtener más información sobre los conceptos de esta guía, consulte las siguientes páginas:

Para obtener más información sobre los métodos y tipos mencionados en esta guía, consulte la siguiente documentación de API:

Volver

Consideraciones sobre el rendimiento

En esta página