API કૉલ અને ટોકન રિફ્રેશ માટે gspread 6 પ્રોક્સી રૂટિંગ
gspread ને પ્રોક્સી-જાણકાર અધિકૃત સત્ર આપો અને Google ઑથેન્ટિકેશન રિફ્રેશ કરવા વપરાતું અલગ ટ્રાન્સપોર્ટ સેટ કરો.
જ્યારે બંનેમાંથી કોઈને પ્રોક્સીની જરૂર હોય ત્યારે gspread નું અધિકૃત API સત્ર અને ઑથેન્ટિકેશન રિફ્રેશ વિનંતીનું ટ્રાન્સપોર્ટ બંને સેટ કરો:
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)આ gspread 6 નું Client ઇન્ટરફેસ પૂરા પાડેલા સત્ર અને એપ્લિકેશનના હાલના ઑથેન્ટિકેશન સાથે વાપરે છે. તે ટ્રાન્સપોર્ટ સેટ કરે છે, સ્પ્રેડશીટ પરવાનગીઓ કે OAuth સ્કોપ નહીં. મંજૂર જાહેર માર્ગ પરનાં જાહેર API અને ટોકન એન્ડપૉઇન્ટ માટે રૂટ નકશા માટે HTTP પ્રોક્સી સૂચિમાંથી અપ્રમાણિત HTTP ઉમેદવાર પસંદ કરો. મધ્યસ્થ બદલતી વખતે બંને સત્રોને કોઈપણ સાચવેલા પ્રોક્સી ખાતાથી મુક્ત રાખો.
AuthorizedSession API વિનંતીઓમાં ઑથેન્ટિકેશન ઉમેરે છે અને તેમને રિફ્રેશ કરી શકે છે. auth_request વિના google-auth તે ટ્રાફિક માટે બીજું Requests સત્ર બનાવી શકે છે. અધિકૃત સત્ર પરના પ્રોક્સી ડિફૉલ્ટ સ્વતંત્ર રીતે બનેલા સત્રને સેટ કરતા નથી.
ઉપરનું Request એડેપ્ટર તે બીજો માર્ગ જાણી જોઈને પૂરો પાડે છે. વપરાય ત્યાં સુધી બંને સત્રો રાખો, પછી તેમના એપ્લિકેશન ક્ષેત્રના અંતે બહારથી માલિકીના સત્રો બંધ કરો.
આ Session ડિફૉલ્ટ છે, તેથી Requests પર્યાવરણ મર્જિંગ હજી તેમને પ્રભાવિત કરી શકે છે. નિશ્ચિત માર્ગ જરૂરી હોય ત્યારે વારસાગત પ્રોક્સી ઇનપુટનો વિચાર કરો.
નિષ્ફળ URL વાપરીને સ્પ્રેડશીટનો ઇનકાર, પ્રોક્સી પડકાર અને ઑથેન્ટિકેશન એન્ડપૉઇન્ટ નિષ્ફળતા વચ્ચે ભેદ પાડો. કૅશ કરેલો ઍક્સેસ ટોકન API કૉલને રિફ્રેશ કર્યા વિના પણ સફળ બનાવી શકે છે.