Konfigurera både gspreads auktoriserade API-session och transporten för förnyelsebegäran när någon av dem behöver proxyn:

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)

Detta använder gspread 6:s Client-gränssnitt med en medföljande session och applikationens befintliga autentiseringsuppgifter. Det konfigurerar transport, inte kalkylarksbehörigheter eller OAuth-omfattningar. För publika API- och tokenändpunkter på en tillåten publik rutt, välj en oautentiserad HTTP-kandidat från HTTP-proxylistan för ruttkartan. Håll båda sessionerna fria från ett sparat proxykonto när mellanhanden byts.

AuthorizedSession lägger till autentiseringsuppgifter i API-anrop och kan förnya dem. Utan auth_request kan google-auth skapa ytterligare en Requests-session för den trafiken. Proxystandardvärden på den auktoriserade sessionen konfigurerar inte den som skapas oberoende.

Request-adaptern ovan tillhandahåller medvetet den andra rutten. Behåll båda sessionerna medan de används och stäng sedan externt ägda sessioner i slutet av deras applikationsomfång.

Detta är Session-standardvärden, så sammanfogning av Requests-miljön kan fortfarande påverka dem. Ta hänsyn till ärvda proxyindata när en fast rutt krävs.

Använd den misslyckade URL:en för att skilja ett avslag från kalkylarket, en proxyutmaning och ett fel vid autentiseringsändpunkten. En cachad åtkomsttoken kan göra API-anrop lyckade utan att förnyelsen utförs alls.

Relaterade artiklar