HTTPX मा proxy र mounts बाट प्रोक्सी मार्ग छान्ने
HTTPX का proxy र transport mounts सही स्किम, स्पष्ट वातावरण व्यवहार तथा छुट्टाछुट्टै जडान र पढाइ सीमासहित प्रयोग गर्नुहोस्।
एउटा एन्डपोइन्टले क्लाइन्टका अनुरोध सम्हाल्नुपर्ने हो भने 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 सही तरिकाले बन्द गर्नुहोस्।