Requests ಈಗಾಗಲೇ ಬಾಡಿಯನ್ನು ಡಿಕಂಪ್ರೆಸ್ ಮಾಡಿದ್ದರೆ, Content-Encoding: gzip ನೊಂದಿಗೆ ಅದನ್ನು ಮುಂದಕ್ಕೆ ಕಳುಹಿಸುವುದು ಮುಂದಿನ ಕ್ಲೈಂಟ್‌ಗೆ ಅದನ್ನು ಮತ್ತೆ ಡಿಕಂಪ್ರೆಸ್ ಮಾಡಲು ಕೇಳುತ್ತದೆ. ಹೆಡರ್‌ಗಳನ್ನು ನಕಲಿಸುವ ಮೊದಲು ಪ್ರಾಕ್ಸಿ ಯಾವ ಪೇಲೋಡ್ ನಿರೂಪಣೆಯನ್ನು ಕಳುಹಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸಿ.

ಕಳುಹಿಸಿದ ಪೇಲೋಡ್content ಹೆಡರ್‌ಗಳು
ಮೂಲ ಎನ್‌ಕೋಡ್ ಮಾಡಿದ ಬೈಟ್‌ಗಳುಅನ್ವಯಿಸುವ ಎನ್‌ಕೋಡಿಂಗ್ ಮತ್ತು ನಿಖರ ಪೇಲೋಡ್ ಉದ್ದವನ್ನು ಉಳಿಸಿಕೊಳ್ಳಿ
ಡೀಕೋಡ್ ಮಾಡಿದ ಬೈಟ್‌ಗಳುಡೀಕೋಡ್ ಮಾಡಿದ ಎನ್‌ಕೋಡಿಂಗ್ ತೆಗೆದುಹಾಕಿ; ಸಂಬಂಧಿತ ಉದ್ದವನ್ನು ತೆಗೆದುಹಾಕಿ ಅಥವಾ ಮರು ಲೆಕ್ಕಾಚಾರ ಮಾಡಿ

ಎನ್‌ಕೋಡ್ ಮಾಡಿದ ಪೇಲೋಡ್ ಬೈಟ್‌ಗಳಿಗೆ, ಈ ತುಣುಕು urllib3 ನ ಕಚ್ಚಾ ಸ್ಟ್ರೀಮ್ ಅನ್ನು content ಡೀಕೋಡಿಂಗ್ ಇಲ್ಲದೆ ಓದುತ್ತದೆ:

with requests.get(url, stream=True, timeout=(5, 30)) as upstream:
    upstream.raise_for_status()
    for block in upstream.raw.stream(65536, decode_content=False):
        downstream.write(block)

downstream ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಪ್ರತಿಕ್ರಿಯೆ ಔಟ್‌ಪುಟ್ ಆಗಿದೆ. ಅದರ ಸ್ಥಿತಿ ಮತ್ತು ಹೆಡರ್‌ಗಳು ಈಗಾಗಲೇ ಆಯ್ಕೆ ಮಾಡಿದ ನೀತಿಯನ್ನು ಅನುಸರಿಸಬೇಕು; ಈ ತುಣುಕು ಸಂಪೂರ್ಣ ಪ್ರಾಕ್ಸಿ ಸರ್ವರ್ ಅನ್ನು ಜಾರಿಗೊಳಿಸುವುದಿಲ್ಲ.

ಟ್ರಾನ್ಸ್‌ಫರ್ ಫ್ರೇಮಿಂಗ್ gzip content ಎನ್‌ಕೋಡಿಂಗ್‌ನಿಂದ ಪ್ರತ್ಯೇಕವಾಗಿದೆ. ಅಪ್‌ಸ್ಟ್ರೀಮ್ HTTP ಲೈಬ್ರರಿ ಈಗಾಗಲೇ ಫ್ರೇಮಿಂಗ್ ಅನ್ನು ನಿರ್ವಹಿಸಿದೆ, ಚಂಕ್ ತೆಗೆಯುವಿಕೆ ಸೇರಿದಂತೆ, ಆದ್ದರಿಂದ Transfer-Encoding ಅನ್ನು ಕುರುಡಾಗಿ ನಕಲಿಸಬೇಡಿ. ಪೇಲೋಡ್ gzip-ಎನ್‌ಕೋಡ್ ಆಗಿ ಉಳಿದರೂ ಡೌನ್‌ಸ್ಟ್ರೀಮ್ ಸರ್ವರ್ ತನ್ನದೇ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಫ್ರೇಮ್ ಮಾಡುತ್ತದೆ.

response.text ನಂತರ UTF-8 ಎನ್‌ಕೋಡಿಂಗ್ ಕೂಡ ನಿರೂಪಣೆಯನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ ಮತ್ತು ಅನಿಯಂತ್ರಿತ ಬೈನರಿ ಡೇಟಾವನ್ನು ಸಂರಕ್ಷಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಪ್ರತಿ ಮಾರ್ಗದಲ್ಲೂ ಅಪ್‌ಸ್ಟ್ರೀಮ್ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಮುಚ್ಚಿ ಅಥವಾ ಬಳಸಿ, ಮತ್ತು ಪ್ರಾಕ್ಸಿ ಒಪ್ಪಂದದ ಪ್ರಕಾರ HTTP ದೋಷಗಳನ್ನು ನಿರ್ವಹಿಸಿ: ಈ ಉದಾಹರಣೆ ಅವುಗಳನ್ನು ಮುಂದಕ್ಕೆ ಕಳುಹಿಸುವ ಬದಲು ಎಸೆಯುತ್ತದೆ.

ಸಂಬಂಧಿತ ಲೇಖನಗಳು