Hægt er að biðminnka POST-body Python HTTP-milliþjóns í rfile
Lestu beiðni Python HTTP-milliþjóns gegnum biðminnkað inntak handlerans í stað þess að bíða eftir bætum sem hafa þegar yfirgefið biðminni soketsins.
Frammilliþjónninn les beiðnilínuna og hausana, sendir þá áfram og bíður síðan í select eftir POST-body. Biðlarinn hefur þegar sent það. Báðir aðilar virðast bíða eftir hinum.
Með BaseHTTPRequestHandler í Python fer lestur hausanna gegnum rfile, biðminnkað inntaksstraum. Sá straumur getur lesið fram og haldið bætum sem tilheyra bodyinu. Að bíða á undirliggjandi soketinu spyr aðeins hvort skráarlýsirinn sé tilbúinn; það spyr ekki hvort Python-straumurinn innihaldi þegar nothæf gögn.
Fylgdu biðminninu sem las hausana
Lestu bodyið líka gegnum self.rfile. Ekki skipta yfir í self.connection.recv eftir að hafa þáttað hausana með biðminnkaða straumnum. Annars getur kóðinn farið fram hjá bætum sem straumurinn heldur þegar og beðið eftir gögnum sem verða aldrei send aftur.
Að gefa rfile sjálft til select fær ekki select til að skoða Python-biðminnið í því. Tilbúinleikaviðmótið virkar gegnum skráarlýsi hlutarins.
Fyrir beiðni með einu gilt Content-Length og án Transfer-Encoding skaltu eyða nákvæmlega tilgreindum fjölda bæta og meðhöndla ótímabæran enda inntaksins og stærðar- og tímatakmörk þín. Ekki lesa þar til EOF: biðlari sem notar varanlegt samband getur haldið sambandinu opnu eftir að beiðninni lýkur.
Gerðu rammagjörð að skýrum hluta milliþjónsins
Chunked beiðnibody þurfa stuðning við chunked rammagjörð. Ekki er hægt að lesa þau með því að leita að Content-Length sem vantar. Óljós lengdargögn þurfa skilgreinda höfnunarleið, í stað þess að velja þann haus sem virðist hentugur.
Blokkjandi handler getur haldið áfram að nota straumviðmót sitt með takmörkuðum lestri. Atburðastýrður milliþjónn þarf biðminnismódel sem samþættir framlestur þáttarans við meðferð tilbúinleika. Að breyta tímatakmörkum sættir ekki tvo óháða neytendur sama sokets.
Þessi greining á við um hvar innkomandi bæturnir eru geymdir. Eftir að milliþjónninn hefur eytt rétta bodyinu þarf hann samt að senda það áfram með samkvæmri HTTP-rammagjörð. Staðlaði http.server-handlerinn er gagnlegur staður til að skilja gangverkið, en hann er ekki framleiðsluútfærsla frammilliþjóns.