I-proxy eya phambili ifunda umugqa wesicelo nama-header, iwadlulisele, bese ilinda ku-select umzimba we-POST. Iklayenti isiwuthumile. Izinhlangothi zombili zibonakala zilindile enye kwenye.

Nge-BaseHTTPRequestHandler ye-Python, ukufunda ama-header kudlula ku-rfile, okuwukugeleza kokufaka okugciniwe. Lokho kugeleza kungafunda phambili futhi kubambe ama-byte omzimba. Ukulinda ku-socket engaphansi kubuza kuphela ukuthi i-file descriptor yayo isilungile; akubuzi ukuthi ukugeleza kwe-Python sekunokuqukethwe okusetshenzisekayo.

Landela ibhafa efunde ama-header

Funda umzimba futhi nge-self.rfile. Ungashintsheli ku-self.connection.recv ngemva kokuhlaziya ama-header ngokugeleza okugciniwe. Uma kungenjalo ikhodi ingadlula ama-byte asevele abanjwe yilokho kugeleza futhi ilinde idatha engeke iphinde ithunyelwe.

Ukudlulisa i-rfile ngokwayo ku-select akwenzi ukuthi i-select ihlole ibhafa yayo ye-Python. I-API yokulungela isebenza nge-file descriptor yento.

Esicelweni esine-Content-Length eyodwa evumelekile futhi esingenayo i-Transfer-Encoding, sebenzisa ngqo inani lama-byte elisimemezelwe, uphatha ukuphela kokufaka kusenesikhathi kanye nemikhawulo yakho yosayizi nesikhathi. Ungafundi kuze kufike ku-EOF: iklayenti elisebenzisa uxhumano oluhlala njalo lingashiya uxhumano luvuliwe ngemva kokuqeda isicelo.

Yenza ukufreyima kube yingxenye ecacile ye-proxy

Imizimba yezicelo ehlukanisiwe idinga ukusekelwa kokufreyima okuhlukanisiwe. Ayikwazi ukufundwa ngokufuna i-Content-Length engekho. Imethadatha yobude engacacile idinga indlela yokwenqaba echaziwe, esikhundleni sokukhetha i-header ebonakala ilula.

I-handler evimbayo ingaqhubeka isebenzisa isixhumi sayo sokugeleza ngokufunda okulinganiselwe. I-proxy eqhutshwa izehlakalo idinga imodeli yebhafa ehlanganisa ukufunda phambili komhlaziyi nokuphathwa kokulungela. Ukushintsha isikhathi sokulinda ngeke kuvumelanise abasebenzisi ababili abazimele be-socket eyodwa.

Lokhu kuxilonga kugxile ekutheni ama-byte angenayo agcinwa kuphi. Ngemva kokuba i-proxy isisebenzisile umzimba ofanele, isadinga ukuwudlulisela lowo mzimba ngokufreyima kwe-HTTP okungaguquki. I-handler ejwayelekile ye-http.server iyindawo ewusizo yokuqonda indlela, kodwa akuwona umsebenzi wokuqala we-proxy yokukhiqiza.

Izihloko ezihlobene