Fram-proxyið les fyrirspurnarlinjuna og headers, sendir tær víðari og bíðar síðani í select eftir POST-líkamslut. Klienturin hevur longu sent hann. Báðar síður tykjast bíða eftir hvørjari aðrari.

Við BaseHTTPRequestHandler í Python fer lesingin av headers gjøgnum rfile, eina buffereraða inntaksstreym. Hon streymurin kann lesa framm og halda bytes, sum hoyra til líkamsslutin. At bíða á undirliggjandi socket spyr bara, um fíluskildrin er klár; tað spyr ikki, um Python-streymurin longu hevur nýtiligt dáta.

Fylg bufferinum, sum las headers

Les líkamsslutin eisini gjøgnum self.rfile. Skift ikki til self.connection.recv, eftir at tú hevur greinað headers við buffereraðu streyminum. Annars kann kóðin fara framvið bytes, sum streymurin longu heldur, og bíða eftir dáta, sum ongantíð verður sent aftur.

At geva rfile sjálvum til select fær ikki select at kanna Python-bufferin hjá tí. Klárleika-APIið virkar gjøgnum fíluskildrin hjá lutinum.

Fyri eina fyrirspurn við einum gildum Content-Length og uttan Transfer-Encoding, nýt júst tað kunngjørda tal av bytes, meðan tú handterir ov tíðliga enda á inntaki og tín støddar- og tíðarmørk. Les ikki til EOF: ein klientur við varandi sambandi kann halda sambandið opið, eftir at fyrirspurnin er liðug.

Ger framing til ein týðiligan part av proxyinum

Chunked fyrirspurnarlíkamslutir tørva chunked framing stuðul. Teir kunnu ikki verða lisnir við at leita eftir Content-Length, sum ikki er til. Ógreið lutfallsmetadáta tørvar eina ásetta avvísingarleð, í staðin fyri at velja tann headersin, sum sær handagangur út.

Ein blokkerandi handler kann halda fram at nýta streyminterfeisin við avmarkaðum lesingum. Ein tiltaksdrivin proxy tørvar eina buffermodell, sum integrerar framlesing parsarans við klárleikahandtering. At broyta eitt timeout samkennir ikki tveir óheftir nýtarar av sama socket.

Henda greiningin er serstøk fyri, hvar inntaksbytes verða hildnir. Tá proxyið hevur nýtt rætta líkamsslutin, má tað enn senda hann víðari við samsvarandi HTTP-framing. Standard http.server-handlerin er ein nyttigur staður at skilja mekanismuna, men hon er ikki ein framleiðslu-fram-proxy-íverkseting.

Skyldar greinar