اضبط جلسة API المصرّح بها في gspread ونقل طلب تحديث بيانات الاعتماد معًا عندما يحتاج أي منهما إلى البروكسي:

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)

يستخدم هذا واجهة Client التي يوفّرها gspread 6 مع جلسة جاهزة وبيانات الاعتماد الموجودة في التطبيق. وهو يضبط النقل، لا أذونات جدول البيانات ولا نطاقات OAuth. ولنقاط نهاية API والرمز العامة على مسار عام مسموح به، اختر مرشّح HTTP غير موثّق من قائمة بروكسي HTTP لخريطة المسارات. أبقِ الجلستين خاليتين من أي حساب بروكسي محتفظ به عند تغيير الوسيط.

يضيف AuthorizedSession بيانات الاعتماد إلى طلبات API ويمكنه تحديثها. وبدون auth_request قد ينشئ google-auth جلسة Requests أخرى لتلك الحركة. والإعدادات الافتراضية للبروكسي على الجلسة المصرّح بها لا تضبط الجلسة المنشأة بشكل مستقل.

يوفّر محوّل Request أعلاه ذلك المسار الثاني عن قصد. أبقِ الجلستين ما دامتا مستخدمتين، ثم أغلق الجلسات المملوكة خارجيًا عند نهاية نطاق تطبيقها.

هذه إعدادات افتراضية للجلسة، لذا قد يؤثر عليها دمج بيئة Requests. احسب مدخلات البروكسي الموروثة عندما يلزم مسار ثابت.

استخدم عنوان URL الفاشل للتمييز بين رفض جدول البيانات وتحدي البروكسي وفشل نقطة نهاية بيانات الاعتماد. وقد يجعل رمز الوصول المخزّن مؤقتًا طلبات API تنجح دون تنفيذ التحديث إطلاقًا.

مقالات ذات صلة