Configurez à la fois la session API autorisée de gspread et le transport de la demande de rafraîchissement des identifiants lorsque l'un des deux a besoin du proxy :

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)

Ce code utilise l'interface Client de gspread 6 avec une session fournie et les identifiants existants de l'application. Il configure le transport, pas les autorisations de la feuille de calcul ni les portées OAuth. Pour les points de terminaison publics d'API et de jeton sur une route publique autorisée, choisissez un candidat HTTP non authentifié dans la liste de proxies HTTP pour la table des routes. Gardez les deux sessions exemptes de tout compte proxy conservé lorsque l'intermédiaire change.

AuthorizedSession ajoute les identifiants aux requêtes API et peut les rafraîchir. Sans auth_request, google-auth peut créer une autre session Requests pour ce trafic. Les valeurs par défaut de proxy de la session autorisée ne configurent pas celle créée indépendamment.

L'adaptateur Request ci-dessus fournit délibérément cette seconde route. Conservez les deux sessions pendant leur utilisation, puis fermez les sessions détenues en externe à la fin de leur portée applicative.

Ce sont des valeurs par défaut de Session, donc la fusion d'environnement de Requests peut encore les affecter. Tenez compte des entrées proxy héritées lorsqu'une route fixe est nécessaire.

Utilisez l'URL en échec pour distinguer un refus de la feuille de calcul, un défi du proxy et une défaillance du point de terminaison des identifiants. Un jeton d'accès en cache peut faire réussir les appels API sans exécuter le moindre rafraîchissement.

Articles similaires