Налаштуйте і авторизовану сесію 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 завершитися успішно взагалі без виконання оновлення.

Схожі статті