gspread 6: Proxy-Routing für API-Aufrufe und Token-Erneuerung
Geben Sie gspread eine proxyfähige autorisierte Sitzung und konfigurieren Sie den separaten Transport für die Erneuerung der Google-Anmeldedaten.
Konfigurieren Sie sowohl die autorisierte API-Sitzung von gspread als auch den Transport der Anmeldedaten-Erneuerung, wenn eines von beiden den Proxy benötigt:
import requests
import gspread
from google.auth.transport.requests import AuthorizedSession, Request
routes = {
'http': 'http://proxy.example:8080',
'https': 'http://proxy.example:8080',
}
token_session = requests.Session()
token_session.proxies.update(routes)
session = AuthorizedSession(
credentials,
auth_request=Request(session=token_session),
)
session.proxies.update(routes)
client = gspread.Client(auth=credentials, session=session)Dies nutzt die Client-Schnittstelle von gspread 6 mit einer übergebenen Sitzung und den vorhandenen Anmeldedaten der Anwendung. Es konfiguriert den Transport, nicht Tabellenkalkulationsberechtigungen oder OAuth-Bereiche. Für öffentliche API- und Token-Endpunkte auf einer zulässigen öffentlichen Route wählen Sie einen nicht authentifizierten HTTP-Kandidaten aus der HTTP-Proxy-Liste für die Routenzuordnung. Halten Sie beide Sitzungen frei von einem gespeicherten Proxykonto, wenn der Vermittler gewechselt wird.
AuthorizedSession fügt Anmeldedaten zu API-Anfragen hinzu und kann sie erneuern. Ohne auth_request kann google-auth eine weitere Requests-Sitzung für diesen Datenverkehr erstellen. Proxy-Standardwerte der autorisierten Sitzung konfigurieren die unabhängig erstellte nicht.
Der Request-Adapter oben stellt diese zweite Route bewusst bereit. Behalten Sie beide Sitzungen während der Nutzung und schließen Sie extern verwaltete Sitzungen am Ende ihres Anwendungsbereichs.
Dies sind Session-Standardwerte, daher kann die Zusammenführung der Requests-Umgebung sie weiterhin beeinflussen. Berücksichtigen Sie geerbte Proxy-Eingaben, wenn eine feste Route erforderlich ist.
Nutzen Sie die fehlgeschlagene URL, um eine Ablehnung der Tabelle, eine Proxy-Abfrage und einen Fehler des Anmeldedaten-Endpunkts zu unterscheiden. Ein zwischengespeichertes Zugriffstoken kann API-Aufrufe erfolgreich machen, ohne dass die Erneuerung überhaupt ausgeführt wird.