ಪ್ರಾಕ್ಸಿ ಚೆಕರ್ಗಳಲ್ಲಿ ಜಾಗತಿಕ urllib opener ಬದಲಾವಣೆಗಳನ್ನು ತಪ್ಪಿಸಿ
urllib ಪ್ರಾಕ್ಸಿ ಪರಿಶೀಲನೆಗಳನ್ನು ಅವುಗಳ ಸ್ವಂತ opener ನಲ್ಲಿ ಇರಿಸಿ, ಇಡೀ ಪ್ರಕ್ರಿಯೆಯ ರೂಟಿಂಗ್ ಮತ್ತು ಟೈಮೌಟ್ ಡೀಫಾಲ್ಟ್ಗಳನ್ನು ಬದಲಿಸುವ ಬದಲು.
from urllib.request import ProxyHandler, build_opener
def make_proxy_opener(proxy_uri):
return build_opener(ProxyHandler({
"http": proxy_uri,
"https": proxy_uri,
}))
opener = make_proxy_opener("http://proxy.example.net:8080")
# Use opener.open(destination, timeout=10) for this route.ಮಾರ್ಗವು ಪರಿಶೀಲನೆಗೆ ಸೇರಿದ್ದಾಗ ಈ opener ನ ಸ್ವಂತ open ವಿಧಾನವನ್ನು ಕರೆಯಿರಿ. ಉದಾಹರಣೆಯ HTTP ಎಂಡ್ಪಾಯಿಂಟ್ ನಿಮ್ಮ ಸೇವೆಯಿಂದ ಅಥವಾ ಸಾರ್ವಜನಿಕ ಪರಿಶೀಲನೆಗಳಿಗಾಗಿ HTTP ಪ್ರಾಕ್ಸಿ ಪಟ್ಟಿಯಿಂದ ಬರಬಹುದು. ಈ ತುಣುಕು ಮಾಲೀಕತ್ವವನ್ನು ತೋರಿಸುತ್ತದೆ; ಇದು ಸಂಪೂರ್ಣ ದೃಢೀಕರಣ ಅಥವಾ ಆರೋಗ್ಯ ನೀತಿಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವುದಿಲ್ಲ. ಖಾತೆ-ನಿರ್ದಿಷ್ಟ ಯಾವುದೇ handler ಅನ್ನು ಆ ಉದ್ದೇಶಿತ ಕ್ಲೈಂಟ್ಗೆ ಜೋಡಿಸಿ ಇರಿಸಿ.
urllib.request.install_opener() ನಂತರದ ಮಾಡ್ಯೂಲ್-ಮಟ್ಟದ urlopen() ಕರೆಗಳು ಬಳಸುವ ಪ್ರಕ್ರಿಯೆ-ವ್ಯಾಪಿ ಡೀಫಾಲ್ಟ್ ಅನ್ನು ಬದಲಿಸುತ್ತದೆ. ಆದ್ದರಿಂದ ಪ್ರಾಕ್ಸಿಗಳ ಮೂಲಕ ಸುತ್ತುವ ಚೆಕರ್ ಸಂಬಂಧವಿಲ್ಲದ ವಿನಂತಿಗಳನ್ನು ತನ್ನ ಕೊನೆಯ ಎಂಡ್ಪಾಯಿಂಟ್ನೊಂದಿಗೆ ಬಿಡಬಹುದು. ತಾತ್ಕಾಲಿಕವಾಗಿ ಸ್ಥಾಪಿಸಿ ಸ್ವಚ್ಛಗೊಳಿಸುವಾಗ ಮರುಸ್ಥಾಪಿಸುವುದು ಹಂಚಿದ ಬದಲಾವಣೆಯ ಸಮಯದಲ್ಲಿ ಸಮಕಾಲೀನ ವಿನಂತಿಗಳು ಚಲಿಸಲು ಇನ್ನೂ ಅನುಮತಿಸುತ್ತದೆ.
socket.setdefaulttimeout() ಹಾಗೆಯೇ ನಂತರ ರಚಿಸಿದ socket ಗಳಿಗೆ ಡೀಫಾಲ್ಟ್ಗಳನ್ನು ಬದಲಿಸುತ್ತದೆ. ಪರಿಶೀಲನೆ ಮಾತ್ರ ಅದನ್ನು ಪಡೆಯಬೇಕಾದಾಗ ಕಾರ್ಯಾಚರಣೆ-ಮಟ್ಟದ ಟೈಮೌಟ್ ಬಳಸಿ.
ಪರಿಶೀಲನೆಯ ಪ್ರತಿಕ್ರಿಯೆಗಳನ್ನು ಮುಚ್ಚಿ ಮತ್ತು ಫಲಿತಾಂಶಗಳನ್ನು ನಿರ್ದಿಷ್ಟವಾಗಿ ಇರಿಸಿ: HTTP ದೋಷ ಪ್ರತಿಕ್ರಿಯೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸತ್ತ ಪ್ರಾಕ್ಸಿ ಶ್ರೋತೃವಲ್ಲ. async ಸೇವೆಯಲ್ಲಿ synchronous urllib ಪರಿಶೀಲನೆ ಬಳಸಿದರೆ, ತಡೆಯುವ ಕೆಲಸವನ್ನು ಸೂಕ್ತ worker ಗೆ ಸ್ಥಳಾಂತರಿಸಿ; ಆ ಕಾರ್ಯಗತಗೊಳಿಸುವ ನಿರ್ಧಾರ ಜಾಗತಿಕ opener ಬದಲಾವಣೆಯನ್ನು ಪ್ರತ್ಯೇಕಗೊಳಿಸುವುದಿಲ್ಲ.
ಪರಿಶೀಲನೆ ಬೇರೆ ನೆಟ್ವರ್ಕ್ ನೀತಿಯನ್ನು ಬಿಡದೆ ತನ್ನ ವೀಕ್ಷಣೆಯನ್ನು ಹಿಂತಿರುಗಿಸಬೇಕು. ಅದರ ಸ್ವಂತ ಕ್ಲೈಂಟ್ ವಸ್ತು ಮತ್ತು ಸೀಮಿತ ಕಾರ್ಯಾಚರಣೆ ಆ ಗಡಿಯನ್ನು ಸ್ಪಷ್ಟಗೊಳಿಸುತ್ತವೆ.