Прокси маршрутизация на gspread 6 за API заявки и обновяване на токени
Дайте на gspread оторизирана сесия, съобразена с прокси, и настройте отделния транспорт, използван за обновяване на идентификационните данни на Google.
Настройте едновременно оторизираната API сесия на gspread и транспорта на заявката за обновяване на идентификационните данни, когато някое от двете се нуждае от прокси:
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)Това използва интерфейса Client на gspread 6 с предоставена сесия и съществуващите идентификационни данни на приложението. Настройва транспорта, а не разрешенията за таблицата или обхватите OAuth. За публични крайни точки на API и на токени по разрешен публичен маршрут изберете неудостоверен HTTP кандидат от списъка с HTTP прокси за картата на маршрутите. Пазете двете сесии без запазен прокси акаунт при смяна на посредника.
AuthorizedSession добавя идентификационни данни към API заявките и може да ги обновява. Без auth_request google-auth може да създаде друга сесия на Requests за този трафик. Настройките по подразбиране за прокси на оторизираната сесия не конфигурират създадената независимо.
Адаптерът Request по-горе предоставя умишлено този втори маршрут. Пазете двете сесии, докато се използват, след което затворете сесиите с външна собственост в края на обхвата им на приложение.
Това са настройки по подразбиране на Session, затова обединяването на средата на Requests все още може да им влияе. Отчитайте наследените прокси входове, когато е необходим фиксиран маршрут.
Използвайте неуспешния URL, за да различите отказ на таблицата, предизвикателство на прокси и повреда на крайната точка за идентификационни данни. Кеширан токен за достъп може да направи API заявките успешни без изобщо да се извърши обновяване.