ایک اینڈپوائنٹ نے کلائنٹ کی درخواستیں سنبھالنی ہوں تو proxy= استعمال کریں۔ منزل کی اسکیم کے مطابق الگ راستے چاہییں تو mounts= استعمال کریں۔ مثالیں HTTPX کے ان انٹرفیس کو استعمال کرتی ہیں؛ پرانے proxies= API والے منصوبے کو اپنے ورژن کی ترتیب درکار ہے۔

ایک اینڈپوائنٹ

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 ہدف CONNECT سے یہ http:// اینڈپوائنٹ استعمال کر سکتا ہے۔ اسکیم 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)

Mount کی کنجیاں منزل کے URL سے ملتی ہیں۔ یہاں HTTP ہدف پورٹ 8080 اور HTTPS ہدف 8081 چنتا ہے۔ پراکسی کی قدر لسنر کا اپنا پروٹوکول بتاتی ہے، اس لیے HTTPS mount میں http:// پراکسی ہونا درست ہے۔ اپنے اینڈپوائنٹ ڈال کر دونوں منزل اسکیمیں دیکھیں۔

دونوں طریقے کلائنٹ اور جہاں transport دیے گئے ہیں ان پر trust_env=False مقرر کرتے ہیں۔ ورنہ HTTPX ڈیفالٹ سے پراکسی اور سرٹیفکیٹ کے ماحولیاتی متغیر پڑھتا ہے۔ تعیناتی ان پر منحصر ہو تو دریافت فعال رکھیں یا مطلوبہ راستے اور اعتماد واضح مقرر کریں۔ نجی اعتماد کے لیے اپنے HTTPX ورژن کا معاونت یافتہ TLS context اور CA ترتیب لیں؛ منزل کی تصدیق فعال رکھیں۔ HTTPS پراکسی کا اعتماد منزل کے اعتماد سے الگ ہو سکتا ہے۔

httpx.Timeout(15.0, connect=5.0) کنکشن کی حد بدلتا ہے اور دوسرے ترتیب یافتہ اجزا کو ڈیفالٹ قدر دیتا ہے۔ پڑھنے، لکھنے اور pool کے انتظار کی الگ حدیں ہیں؛ پندرہ سیکنڈ کل گزرے وقت کی آخری حد نہیں۔ Pool timeout کا مطلب دوسرا کام دستیاب کنکشن روکے ہوئے بھی ہو سکتا ہے۔ اسے پراکسی ناقابلِ رسائی ہونے کا ثبوت ماننے سے پہلے کلائنٹ اور streaming response درست بند کریں۔

متعلقہ مضامین