gspread 6 proxy-routing för API-anrop och tokenförnyelse
Ge gspread en proxy-medveten auktoriserad session och konfigurera den separata transport som används för att förnya Googles autentiseringsuppgifter.
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.