Hər ikisi proksi tələb etdikdə gspread-in avtorizasiyalı API sessiyasını və etimadnamə yeniləmə sorğusunun nəqliyyatını birlikdə qurun:

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)

Bu, gspread 6-nın təqdim edilmiş sessiyalı Client interfeysini tətbiqin mövcud etimadnamələri ilə istifadə edir. O, nəqliyyatı qurur, cədvəl icazələrini və ya OAuth əhatələrini deyil. İcazə verilmiş ictimai marşrutda yerləşən ictimai API və token son nöqtələri üçün marşrut xəritəsinə HTTP proksi siyahısından autentifikasiyasız HTTP namizədi seçin. Vasitəçini dəyişərkən hər iki sessiyanı saxlanılan proksi hesabından azad saxlayın.

AuthorizedSession etimadnamələri API sorğularına əlavə edir və onları yeniləyə bilir. auth_request olmadan google-auth həmin trafik üçün başqa bir Requests sessiyası yarada bilər. Avtorizasiyalı sessiyadakı proksi defoltları müstəqil yaradılmış sessiyanı qurmur.

Yuxarıdakı Request adapteri həmin ikinci marşrutu qəsdən təmin edir. İstifadə olunduqları müddətdə hər iki sessiyanı saxlayın, sonra xaricdən sahib olunan sessiyaları tətbiq əhatəsinin sonunda bağlayın.

Bunlar Session defoltlarıdır, ona görə də Requests mühit birləşməsi hələ də onlara təsir edə bilər. Sabit marşrut tələb olunduqda miras qalan proksi girişlərini nəzərə alın.

Uğursuz URL-dən cədvəlin imtinasını, proksi çağırışını və etimadnamə son nöqtəsinin nasazlığını ayırd etmək üçün istifadə edin. Keşlənmiş giriş tokeni API çağırışlarının yenilənməni heç icra etmədən uğur qazanmasına səbəb ola bilər.

Əlaqəli məqalələr