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 कॉल को बिना कोई रीफ़्रेश किए सफल बना सकता है।