Einige Dienste geben möglicherweise große Listen von Elementen zurück, z. B. Zeilen oder Ressourcenbeschreibungen. Um die CPU- und Arbeitsspeichernutzung unter Kontrolle zu halten, geben Dienste diese Ressourcen in pages zurück: kleinere Teilmengen der Elemente mit einem Fortsetzungstoken, um die nächste Teilmenge anzufordern.
Das Durchlaufen von Elementen nach Seite kann mühsam sein. Die Clientbibliotheken bieten Adapter, um die Seiten in asynchrone Iteratoren zu konvertieren. In diesem Leitfaden erfahren Sie, wie Sie mit diesen Adaptern arbeiten.
Vorbereitung
In dieser Anleitung wird der Secret Manager-Dienst verwendet, um Listenoperationen zu veranschaulichen. Die in dieser Anleitung enthaltenen Konzepte gelten auch für andere Dienste.
Damit Sie diesem Leitfaden folgen können, müssen Sie den Secret Manager-Dienst aktiviert haben, angemeldet sein und dafür sorgen, dass Ihr Konto die erforderlichen Berechtigungen hat. Eine Anleitung dazu, wie Sie diese Voraussetzungen erfüllen, finden Sie in der Kurzanleitung für Dienste.
Eine vollständige Einrichtungsanleitung für die Rust-Bibliotheken finden Sie unter Entwicklungsumgebung einrichten.
Abhängigkeiten
Fügen Sie die Secret Manager-Bibliothek Ihrer Cargo.toml-Datei hinzu:
cargo add google-cloud-secretmanager-v1
Listenmethoden durchlaufen
Damit die Elemente in einer Listenmethode durchlaufen werden können, geben die APIs eine Implementierung des ItemPaginator-Traits zurück. Führen Sie das Merkmal mit einer use-Deklaration ein:
Verwenden Sie die Methode by_item, um die Elemente zu durchlaufen.
In seltenen Fällen enthalten Seiten möglicherweise zusätzliche Informationen, auf die Sie zugreifen müssen, oder Sie müssen Ihren Fortschritt in verschiedenen Prozessen überprüfen. Bei Bedarf können Sie vollständige Seiten anstelle einzelner Elemente durchlaufen.
Führen Sie
Paginatormit eineruse-Deklaration in den Bereich ein:Mit
by_pagekönnen Sie die Seiten durchlaufen:
Arbeiten mit futures::Stream
Möglicherweise möchten Sie diese APIs im größeren Rust-Ökosystem asynchroner Streams wie tokio::Stream verwenden. So gehts:
Aktivieren Sie das Feature
unstable-streamsimgoogle_cloud_gax-Crate. Der Name dieses Features weist darauf hin, dass diese APIs instabil sind. Sie sollten sie nur verwenden, wenn Sie bereit sind, mit allen Problemen umzugehen, die sich aus inkompatiblen Änderungen amfutures::Stream-Trait ergeben.cargo add google-cloud-gax --features unstable-streamIn den folgenden Beispielen wird auch das
futures::stream::StreamExt-Trait verwendet, das Sie durch Hinzufügen desfutures-Crates aktivieren.cargo add futuresFügen Sie die erforderlichen
use-Deklarationen hinzu:Verwenden Sie die Funktion
into_stream, umItemPaginatorinfutures::Streamzu konvertieren.
Ebenso können Sie die Funktion into_stream verwenden, um Paginator in einen futures::Stream-Wert zu konvertieren.
List-Methoden durch Festlegen des Tokens für die nächste Seite fortsetzen
In einigen Fällen, z. B. bei einem unterbrochenen Listenvorgang, können Sie das Token für die nächste Seite festlegen, um die Paginierung ab einer bestimmten Seite fortzusetzen.
Wann sollten die Paginierungs-Helfer verwendet werden?
Die Google Cloud Clientbibliotheken für Rust bieten einen Adapter zum Konvertieren der List-RPCs, wie in AIP-4233 definiert, in Typen, die ItemPaginator und Paginator implementieren, wenn die Google API List-Methode der von AIP-158 definierten Paginierungsrichtlinie entspricht. Kurz gesagt: Gemäß dieser Richtlinie muss bei jedem Aufruf einer List-Methode eine Seite mit Ressourcen (z. B. Secrets) zusammen mit einem Token zurückgegeben werden, das Sie an die List-Methode übergeben können, um die nächste Seite abzurufen.
Die meisten Google Cloud -Dienste folgen diesen Richtlinien. In den Fällen, in denen dies nicht der Fall ist, müssen Sie einen eigenen Adapter implementieren, um die Ergebnisse zu durchlaufen.