gzip بايتلىرىنى ئۇلارنى تەسۋىرلەيدىغان تېما بىلەن يوللاڭ
Requests ئاساسىدىكى ۋاكالەتچىدە كودلانغان ياكى كودى يېشىلگەن يۈكنى تاللاڭ، ئاندىن تۆۋەنكى ئىنكاسقا ماس content تېمىسى ۋە ئۆزىنىڭ رامكىسىنى بېرىڭ.
ئەگەر 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 خاتالىقلىرىنى ۋاكالەتچى كېلىشىمىگە ئاساسەن بىر تەرەپ قىلىڭ: بۇ مىسال ئۇلارنى يوللاشنىڭ ئورنىغا تاشلايدۇ.