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 ਠੀਕ ਬੰਦ ਕਰੋ।