Edasta gzip-baidid neid kirjeldavate päistega
Vali Requests-põhises puhverserveris kodeeritud või dekodeeritud kandev sisu ning anna allavoolu vastusele sobivad content-päised ja oma raamistus.
Kui Requests on keha juba lahti pakkinud, nõuab selle edastamine Content-Encoding: gzip-ga järgmiselt kliendilt selle uuesti lahtipakkimist. Otsusta, millist kandevormi puhverserver saadab, enne päiste kopeerimist.
| Saadetud kandev sisu | Content-päised |
|---|---|
| Algsed kodeeritud baidid | Säilita kohaldatav kodeering ja täpne kandev pikkus |
| Dekodeeritud baidid | Eemalda dekodeeritud kodeering; eemalda või arvuta uuesti vastav pikkus |
Kodeeritud kandevbaitide puhul loeb see fragment urllib3 töötlemata voogu ilma content-dekodeerimiseta:
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 on olemasolev vastuseväljund. Selle olek ja päised peavad juba järgima valitud poliitikat; see fragment ei rakenda täielikku puhverserverit.
Ülekande raamistus on gzip content-kodeeringust eraldi. Ülalvoolu HTTP-teek on raamistuse juba käsitlenud, sealhulgas tükkide eemaldamise, seega ära kopeeri Transfer-Encoding pimesi. Allavoolu server raamistab oma vastuse ka siis, kui kandev sisu jääb gzip-kodeerituks.
response.text, millele järgneb UTF-8 kodeerimine, muudab samuti esitust ega suuda säilitada suvalisi binaarandmeid. Sulge või tarbi ülalvoolu vastus igal teel ning käsitle HTTP-vigu puhverserveri lepingu järgi: see näide viskab need edastamise asemel.