Skonfiguruj zarówno autoryzowaną sesję API gspread, jak i transport żądania odświeżania danych logowania, gdy którekolwiek z nich potrzebuje 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)

To używa interfejsu Client gspread 6 z dostarczoną sesją i istniejącymi danymi logowania aplikacji. Konfiguruje transport, a nie uprawnienia arkusza czy zakresy OAuth. Dla publicznych punktów końcowych API i tokenów na dozwolonej trasie publicznej wybierz nieuwierzytelnionego kandydata HTTP z listy proxy HTTP do mapy tras. Trzymaj obie sesje wolne od zapisanego konta proxy przy zmianie pośrednika.

AuthorizedSession dodaje dane logowania do żądań API i może je odświeżać. Bez auth_request google-auth może utworzyć kolejną sesję Requests dla tego ruchu. Domyślne ustawienia proxy sesji autoryzowanej nie konfigurują tej utworzonej niezależnie.

Adapter Request powyżej celowo zapewnia tę drugą trasę. Utrzymuj obie sesje podczas używania, a następnie zamknij sesje będące własnością zewnętrzną na końcu ich zakresu zastosowania.

To domyślne ustawienia Session, więc łączenie środowiska Requests nadal może na nie wpływać. Uwzględnij odziedziczone dane wejściowe proxy, gdy wymagana jest stała trasa.

Użyj nieudanego adresu URL, aby odróżnić odmowę arkusza, wyzwanie proxy i awarię punktu końcowego danych logowania. Token dostępu w pamięci podręcznej może sprawić, że wywołania API powiodą się bez wykonania jakiegokolwiek odświeżania.

Powiązane artykuły