HTTPX PoolTimeout ಪ್ರಾಕ್ಸಿ ಸಂಪರ್ಕದ ಟೈಮ್ಔಟ್ ಅಲ್ಲ
HTTPX ಸಂಪರ್ಕ ಪೂಲ್ನಲ್ಲಿ ಕಾಯುವಿಕೆಯನ್ನು ಗುರುತಿಸಿ; ಇನ್ನೊಂದು ವಿನಂತಿಯೇ ಸಿಗದಿರಬಹುದಾದ ಪ್ರಾಕ್ಸಿ ಬದಲಿಸುವ ಮೊದಲು ಸ್ಟ್ರೀಮಿಂಗ್ ಪ್ರತಿಕ್ರಿಯೆಗಳನ್ನು ಮುಕ್ತಗೊಳಿಸಿ.
PoolTimeout ಎಂದರೆ HTTPXಗೆ ಸಂರಚಿಸಿದ ಕಾಯುವ ಸಮಯದ ಒಳಗೆ ಪೂಲ್ನಿಂದ ಸಂಪರ್ಕ ಸಿಗಲಿಲ್ಲ. ಇದು ಪ್ರಾಕ್ಸಿಗೆ ಹೊಸ TCP ಸಂಪರ್ಕ ಟೈಮ್ಔಟ್ ಆಗಿದ್ದಕ್ಕೆ ಪುರಾವೆಯಲ್ಲ. ಎರಡನೇ ವಿನಂತಿ ಇನ್ನೂ ನಿಮ್ಮ ಪ್ರಕ್ರಿಯೆಯೊಳಗೆ ಕಾಯುತ್ತಿರಬಹುದು.
ಕ್ಲೈಂಟ್ ಒಂದೇ ಸಂಪರ್ಕ ಅನುಮತಿಸಿ ಮೊದಲ ಸ್ಟ್ರೀಮಿಂಗ್ ಪ್ರತಿಕ್ರಿಯೆ ತೆರೆದಿಟ್ಟಾಗ ಇದನ್ನು ಮರುಸೃಷ್ಟಿಸುವುದು ಸುಲಭ. ಇನ್ನೊಂದು ವಿನಂತಿ ಆರಂಭಿಸುವುದರಿಂದ ಆ ಸಂಪರ್ಕ ತಾನಾಗಿಯೇ ಬಿಡುಗಡೆಯಾಗುವುದಿಲ್ಲ.
ಸ್ಟ್ರೀಮಿಂಗ್ ಪ್ರತಿಕ್ರಿಯೆಯ ಹೊಣೆ ಸ್ಪಷ್ಟಗೊಳಿಸಿ
import httpx
limits = httpx.Limits(
max_connections=1,
max_keepalive_connections=1,
)
timeout = httpx.Timeout(
connect=5, read=10, write=10, pool=1
)
with httpx.Client(
proxy="http://203.0.113.10:8080",
trust_env=False,
limits=limits,
timeout=timeout,
) as client:
with client.stream("GET", "https://example.com/") as response:
print(response.status_code)
for chunk in response.iter_bytes():
print(len(chunk))
next_response = client.get("https://example.com/")
print(next_response.status_code)
ಚಲಾಯಿಸುವ ಮೊದಲು ದಾಖಲಾತಿಯ ಪ್ರಾಕ್ಸಿ ವಿಳಾಸ ಬದಲಿಸಿ. ಮುಂದಿನ ವಿನಂತಿ ಸ್ಟ್ರೀಮ್ ಸಂದರ್ಭದಿಂದ ಹೊರಬಂದ ನಂತರ ಆರಂಭವಾಗುತ್ತದೆ. ಕೋಡ್ ಲೂಪ್ ಬಿಟ್ಟರೂ ಅಥವಾ ಎಕ್ಸೆಪ್ಷನ್ ಎತ್ತಿದರೂ ಆ ಹೊರಬರುವಿಕೆ ಪ್ರತಿಕ್ರಿಯೆ ಮುಚ್ಚುತ್ತದೆ.
client.send(request, stream=True)ನಂತಹ ಕೈಯಾರೆ ಸ್ಟ್ರೀಮಿಂಗ್ನಲ್ಲಿ ಕೊನೆಯ ಮುಚ್ಚುವಿಕೆ ನಿಮ್ಮ ಕೋಡ್ ಹೊಣೆ. AsyncClientಗೆ ಸಮಾನ ಕೈಯಾರೆ ಸ್ವಚ್ಛಗೊಳಿಸುವಿಕೆಯನ್ನು response.aclose() ಮೂಲಕ ಕಾಯಲಾಗುತ್ತದೆ. ಓದದ ಪ್ರತಿಕ್ರಿಯೆ ಮುಚ್ಚುವುದು ಸಾಮರ್ಥ್ಯ ಮುಕ್ತಗೊಳಿಸುತ್ತದೆ, ಆದರೆ ಅಡಿಯ ಸಂಪರ್ಕವನ್ನು ಮರುಬಳಸದೆ ಬಿಟ್ಟುಬಿಡಬೇಕಾಗಬಹುದು.
ಎಕ್ಸೆಪ್ಷನ್ ಹೆಸರು ಓದಿ
ConnectTimeout ಸಂಪರ್ಕ ಸ್ಥಾಪನೆಗೆ ಸಂಬಂಧಿಸಿದೆ. ReadTimeout ಪ್ರತಿಕ್ರಿಯೆ ಡೇಟಾ ಕಾಯುವುದಕ್ಕೆ ಸಂಬಂಧಿಸಿದೆ. PoolTimeout ಸಂಪರ್ಕ ಸ್ಲಾಟ್ ಪಡೆಯುವುದಕ್ಕೆ ಸಂಬಂಧಿಸಿದೆ. ಕೇವಲ «ಪ್ರಾಕ್ಸಿ ಟೈಮ್ಔಟ್» ದಾಖಲಿಸುವುದು ಸರಿಯಾದ ಪರಿಹಾರ ಆರಿಸಲು ಬೇಕಾದ ವ್ಯತ್ಯಾಸ ಕಳೆದುಕೊಳ್ಳುತ್ತದೆ.
ಎಂಡ್ಪಾಯಿಂಟ್ IP ಬದಲಿಸುವ ಮೊದಲು ತೆರೆದ ಪ್ರತಿಕ್ರಿಯೆಗಳು, ಸಮಕಾಲೀನ ಕೆಲಸಗಳು ಮತ್ತು ಸಂಪರ್ಕ ಮಿತಿಗಳನ್ನು ಪರಿಶೀಲಿಸಿ. ಸಮಂಜಸ ಸಮಕಾಲೀನ ಹೊರೆಗೆ ದೊಡ್ಡ ಪೂಲ್ ಸೂಕ್ತವಾಗಬಹುದು, ಆದರೆ ಎಂದೂ ಮುಚ್ಚದ ಪ್ರತಿಕ್ರಿಯೆ ಸರಿಪಡಿಸುವುದಿಲ್ಲ. ಅದು ಆ್ಯಪ್ಗೆ ಆಕ್ರಮಿಸಲು ಇನ್ನಷ್ಟು ಸಾಮರ್ಥ್ಯ ಮಾತ್ರ ನೀಡುತ್ತದೆ.
ಇಡೀ ಕೆಲಸದಲ್ಲಿ ಕ್ಲೈಂಟ್ ಮರುಬಳಸಬಹುದಾಗಿ ಉಳಿಸಿ. ಪ್ರತಿ ವಿನಂತಿ ಕೆಲಸ ಮಾಡುವಂತೆ ಕಾಣಲು ಕ್ಲೈಂಟ್ ಮರುಸೃಷ್ಟಿಸುವುದು ಜೀವನಚಕ್ರದ ಸಮಸ್ಯೆ ಮರೆಮಾಡಿ ಸಂಪರ್ಕ ಮರುಬಳಕೆಯನ್ನು ಕಳೆದುಕೊಳ್ಳಬಹುದು.