Python HTTP ۋاكالەتچىنىڭ POST گەۋدىسى rfile ئىچىدە ساقلىنىشى مۇمكىن
Python HTTP ۋاكالەتچە تەلەپنى socket بۇفېرىدىن ئاللىقاچان چىقىپ كەتكەن بايتلارنى ساقلىماستىن، handler نىڭ بۇفېرلانغان كىرگۈزۈشى ئارقىلىق ئوقۇڭ.
ئالدىغا يۆتكەش ۋاكالەتچىسى تەلەپ قۇرى ۋە باش ئورنىنى ئوقۇپ، ئۇلارنى يۆتكەيدۇ، ئاندىن select ئىچىدە POST گەۋدىسىنى ساقلايدۇ. خېرىدار ئۇنى ئاللىقاچان ئەۋەتكەن. ئىككى تەرەپ بىر-بىرىنى ساقلاۋاتقاندەك كۆرۈنىدۇ.
Python نىڭ BaseHTTPRequestHandler بىلەن، باش ئورۇننى ئوقۇش rfile ئارقىلىق ئۆتىدۇ، ئۇ بۇفېرلانغان كىرگۈزۈش ئېقىمى. بۇ ئېقىم ئالدىغا ئوقۇپ، گەۋدىگە تەۋە بايتلارنى تۇتۇپ قالالايدۇ. ئاستىدىكى socket نى ساقلاش پەقەت ئۇنىڭ ھۆججەت تەسۋىرلىگۈچى تەييارمۇ دەپ سورايدۇ؛ Python ئېقىمىدا ئىشلىتىشكە بولىدىغان سانلىق مەلۇمات بارمۇ دەپ سورىمايدۇ.
باش ئورۇننى ئوقۇغان بۇفېرنى ئەگەشىڭ
گەۋدىنىمۇ self.rfile ئارقىلىق ئوقۇڭ. بۇفېرلانغان ئېقىم بىلەن باش ئورۇننى تەھلىل قىلغاندىن كېيىن self.connection.recv غا ئالماشتۇرماڭ. بولمىسا كود ئۇ ئېقىم تۇتۇپ تۇرغان بايتلاردىن ئېتىپ ئۆتۈپ، قايتا ھەرگىز ئەۋەتىلمەيدىغان سانلىق مەلۇماتنى ساقلىشى مۇمكىن.
rfile نىڭ ئۆزىنى select غا بېرىش select نى ئۇنىڭ Python بۇفېرىنى تەكشۈرۈشكە مەجبۇرلىمايدۇ. تەييارلىق API ئوبيېكتنىڭ ھۆججەت تەسۋىرلىگۈچى ئارقىلىق ئىشلەيدۇ.
بىر ئىشەنچلىك Content-Length بار ۋە Transfer-Encoding يوق تەلەپ ئۈچۈن، ئېلان قىلىنغان بايت سانىنى دەل ئىشلىتىڭ، كىرگۈزۈشنىڭ ۋاقتىدىن بۇرۇن ئاخىرلىشىشى ۋە چوڭ-كىچىكلىك بىلەن ۋاقىت چەكلىمىڭىزنى بىر تەرەپ قىلىڭ. EOF غىچە ئوقۇماڭ: داۋاملىق ئۇلىنىش ئىشلىتىدىغان خېرىدار تەلەپ تۈگىگەندىن كېيىنمۇ ئۇلىنىشنى ئوچۇق قالدۇرۇشى مۇمكىن.
رامكا قۇرۇشنى ۋاكالەتچىنىڭ ئوچۇق قىسمى قىلىڭ
چانكىلانغان تەلەپ گەۋدىسى چانكىلانغان رامكا قۇرۇشنى قوللاشنى تەلەپ قىلىدۇ. ئۇلارنى يوق Content-Length نى ئىزدەپ ئوقۇغىلى بولمايدۇ. ئېنىقسىز ئۇزۇنلۇق مېتا سانلىق مەلۇماتى قولايلىق كۆرۈنگەن باش ئورۇننى تاللاش ئورنىغا بەلگىلەنگەن رەت قىلىش يولىنى تەلەپ قىلىدۇ.
توسىغۇچى handler چەكلەنگەن ئوقۇشلار بىلەن ئېقىم كۆرۈنمە يۈزىنى ئىشلىتىشنى داۋاملاشتۇرالايدۇ. ۋەقەگە ئاساسلانغان ۋاكالەتچە تەھلىللىگۈچنىڭ ئالدىن ئوقۇشىنى تەييارلىق بىر تەرەپ قىلىش بىلەن بىرلەشتۈرىدىغان بۇفېر مودېلىنى تەلەپ قىلىدۇ. ۋاقىت چېكىنى ئۆزگەرتىش بىر socket نىڭ ئىككى مۇستەقىل ئىشلەتكۈچىسىنى ياراشتۇرالمايدۇ.
بۇ دىئاگنوز كىرگەن بايتلارنىڭ قەيەردە تۇتۇلۇشىغا خاس. ۋاكالەتچە توغرا گەۋدىنى ئىشلىتىپ بولغاندىن كېيىنمۇ، ئۇ گەۋدىنى ماس كېلىدىغان HTTP رامكىسى بىلەن يۆتكەشى كېرەك. ئۆلچەملىك http.server handler مېخانىزمنى چۈشىنىش ئۈچۈن پايدىلىق ئورۇن، ئەمما ئۇ ئىشلەپچىقىرىش ئالدىغا يۆتكەش ۋاكالەتچىسىنىڭ ئەمەلىيلىشىشى ئەمەس.