Algunos servicios muestran listas de elementos potencialmente grandes, como filas o descripciones de recursos. Para mantener bajo control el uso de CPU y memoria, los servicios muestran estos recursos en pages: subconjuntos más pequeños de los elementos con un token de continuación para solicitar el siguiente subconjunto.
Iterar sobre los elementos por página puede ser tedioso. Las bibliotecas cliente proporcionan adaptadores para convertir las páginas en iteradores asíncronos. En esta guía, se muestra cómo trabajar con estos adaptadores.
Requisitos previos
En esta guía, se usa el servicio de Secret Manager para demostrar las operaciones de lista. Los conceptos incluidos en esta guía también se aplican a otros servicios.
Para seguir esta guía, deberás habilitar el servicio de Secret Manager, acceder y asegurarte de que tu cuenta tenga los permisos necesarios. Para obtener orientación sobre cómo cumplir con estos requisitos previos, sigue la guía de inicio rápido del servicio .
Para obtener instrucciones de configuración completas para las bibliotecas de Rust, consulta Configura tu entorno de desarrollo.
Dependencias
Agrega la biblioteca de Secret Manager a tu archivo Cargo.toml:
cargo add google-cloud-secretmanager-v1
Iteración de métodos de lista
Para ayudar a iterar los elementos en un método de lista, las APIs muestran una implementación del rasgo ItemPaginator. Introduce el rasgo en el alcance con una declaración use:
Para iterar sobre los elementos, usa el método by_item.
En casos poco comunes, es posible que las páginas contengan información adicional a la que necesitas acceder o que debas marcar tu progreso en los procesos. Si es necesario, puedes iterar sobre páginas completas en lugar de elementos individuales.
Introduce
Paginatoren el alcance con una declaraciónuse:Itera sobre las páginas con
by_page:
Trabaja con futures::Stream
Es posible que desees usar estas APIs en el ecosistema más grande de Rust de flujos asíncronos, como tokio::Stream. Esto se logra de la siguiente manera:
Habilita la función
unstable-streamsen el crategoogle_cloud_gax. El nombre de esta función sirve como aviso de que estas APIs son inestables. Solo debes usarlas si estás preparado para lidiar con cualquier interrupción que resulte de cambios incompatibles en elfutures::Streamrasgo.cargo add google-cloud-gax --features unstable-streamEn los siguientes ejemplos, también se usa el rasgo
futures::stream::StreamExt, que se habilita agregando el cratefutures.cargo add futuresAgrega las declaraciones
useobligatorias:Usa la función
into_streampara convertirItemPaginatoren unfutures::Stream.
Del mismo modo, puedes usar la función into_stream para convertir Paginator en un futures::Stream.
Reanuda los métodos de lista configurando el token de página siguiente
En algunos casos, como una operación de lista interrumpida, puedes configurar el token de página siguiente para reanudar la paginación desde una página específica.
Cuándo usar los asistentes de paginador
Las Google Cloud bibliotecas cliente de Rust proporcionan un adaptador para convertir las
RPC de lista según lo definido por AIP-4233 en tipos que implementan ItemPaginator y
Paginator si el método de lista de la API de Google sigue el lineamiento de paginación
definido por AIP-158. En resumen, este lineamiento requiere que cada llamada a un método List muestre una página de elementos de recursos (por ejemplo, secretos) junto con un token que puedes pasar al método List para recuperar la página siguiente.
Lamayoría de los Google Cloud servicios siguen estos lineamientos. En los casos en los que no lo hacen, debes implementar tu propio adaptador para iterar sobre los resultados.