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లను సరిగ్గా మూసివేయండి.