İkisinden biri proxy gerektirdiğinde hem gspread'in yetkili API oturumunu hem de kimlik bilgisi yenileme isteğinin aktarımını yapılandırın:

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 kod, gspread 6'nın Client arayüzünü sağlanan oturum ve uygulamanın mevcut kimlik bilgileriyle kullanır. Aktarımı yapılandırır, e-tablo izinlerini veya OAuth kapsamlarını değil. İzin verilen genel bir rotadaki genel API ve token uç noktaları için rota haritasına HTTP proxy listesinden kimliği doğrulanmamış bir HTTP adayı seçin. Aracıyı değiştirirken iki oturumu da saklanan herhangi bir proxy hesabından uzak tutun.

AuthorizedSession API isteklerine kimlik bilgileri ekler ve bunları yenileyebilir. auth_request olmadan google-auth o trafik için başka bir Requests oturumu oluşturabilir. Yetkili oturumdaki proxy varsayılanları bağımsız olarak oluşturulanı yapılandırmaz.

Yukarıdaki Request bağdaştırıcısı bu ikinci rotayı bilerek sağlar. Kullanım sırasında iki oturumu da koruyun, ardından uygulama kapsamlarının sonunda dışarıya ait oturumları kapatın.

Bunlar Session varsayılanlarıdır, bu yüzden Requests ortam birleştirmesi onları hâlâ etkileyebilir. Sabit bir rota gerektiğinde devralınan proxy girdilerini hesaba katın.

Başarısız URL'yi e-tablonun reddi, proxy meydan okuması ve kimlik bilgisi uç noktası arızası arasında ayrım yapmak için kullanın. Önbelleğe alınmış bir erişim tokenı, API çağrılarının hiç yenileme yapılmadan başarılı olmasını sağlayabilir.

İlgili makaleler