استخدم proxy= عندما تتولى نقطة اتصال واحدة طلبات العميل. واستخدم mounts= عندما تحتاج مخططات الوجهة إلى مسارات مختلفة. تستعمل الأمثلة هاتين الواجهتين في HTTPX؛ والمشروع الذي يستخدم API الأقدم proxies= يحتاج إلى إعداد يناسب إصداره.

نقطة اتصال واحدة

import httpx

timeout = httpx.Timeout(15.0, connect=5.0)

with httpx.Client(
    proxy="http://127.0.0.1:8080",
    trust_env=False,
    timeout=timeout,
) as client:
    response = client.get("https://example.com/")
    response.raise_for_status()
    print(response.status_code)

استبدل منفذ الاستماع المحلي بوكيل HTTP يعمل؛ فالمرشح من قائمة وكلاء HTTP يحتاج إلى اختبار مع وجهتك أيضًا. يمكن لوجهة HTTPS استخدام نقطة http:// هذه عبر CONNECT. تغيير المخطط إلى https:// يطلب TLS إلى الوكيل نفسه، ويحتاج إلى دعم العميل ومنفذ الاستماع معًا.

فصل المسارات بحسب مخطط الوجهة

import httpx

mounts = {
    "http://": httpx.HTTPTransport(
        proxy="http://127.0.0.1:8080",
        trust_env=False,
    ),
    "https://": httpx.HTTPTransport(
        proxy="http://127.0.0.1:8081",
        trust_env=False,
    ),
}

with httpx.Client(
    mounts=mounts,
    trust_env=False,
    timeout=httpx.Timeout(15.0, connect=5.0),
) as client:
    response = client.get("https://example.com/")
    response.raise_for_status()
    print(response.status_code)

تطابق مفاتيح الربط عناوين URL المستهدفة. تختار وجهات HTTP هنا المنفذ 8080، ووجهات HTTPS المنفذ 8081. تصف قيمة الوكيل بروتوكول منفذ الاستماع نفسه، لذا يمكن أن يتضمن ربط HTTPS وكيل http:// بصورة صحيحة. ضع نقاط اتصالك وافحص مخططي الوجهة كليهما.

يضبط المثالان trust_env=False على العميل وعلى طبقات النقل حيث تُقدَّم. وإلا يقرأ HTTPX افتراضيًا متغيرات البيئة للوكيل والشهادات. إذا كان نشرك يعتمد عليها، فأبقِ الاكتشاف مفعّلًا أو اضبط المسارات والثقة المطلوبة صراحةً. للثقة الخاصة استخدم سياق TLS وإعداد CA المدعومين في إصدار HTTPX لديك، واترك تحقق الوجهة مفعّلًا. يمكن أن تكون الثقة بوكيل HTTPS منفصلة عن الثقة بالوجهة.

يتجاوز httpx.Timeout(15.0, connect=5.0) مهلة الاتصال ويعطي مكونات المهل الأخرى المضبوطة القيمة الافتراضية. للقراءة والكتابة وانتظار المجمع حدود منفصلة؛ خمس عشرة ثانية ليست مهلة إجمالية للزمن الفعلي. قد تعني مهلة المجمع أن عملًا آخر يحتجز الاتصالات المتاحة. أغلق العملاء والاستجابات المتدفقة بصورة صحيحة قبل اعتبارها دليلًا على تعذر الوصول إلى الوكيل.

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