যখন যেকোনোটির প্রক্সি প্রয়োজন হয়, তখন 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 কল সফল করতে পারে।

সম্পর্কিত নিবন্ধ