Эгер Requests денени мурун эле ачкан болсо, аны Content-Encoding: gzip менен өткөрүү кийинки кардардан аны кайра ачууну талап кылат. Аталыштарды көчүрүүдөн мурун прокси кайсы жүк көрүнүшүн жөнөтөрүн чечиңиз.

Жөнөтүлгөн жүкContent аталыштары
Баштапкы коддолгон байттарКолдонулуучу коддоону жана жүктүн так узундугун сактаңыз
Декоддолгон байттарДекоддолгон коддоону алып салыңыз; тиешелүү узундукту алып салыңыз же кайра эсептеңиз

Коддолгон жүк байттары үчүн бул үзүндү urllib3-түн чийки агымын content декоддоосуз окуйт:

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 — бул учурдагы жооп чыгарылышы. Анын абалы жана аталыштары мурунтан тандалган саясатка ылайык болушу керек; бул үзүндү толук прокси серверин ишке ашырбайт.

Ташуу кадрлоосу gzip content коддоосунан өзүнчө. Жогорку HTTP китепканасы кадрлоону, анын ичинде бөлүктөрдү алып салууну, мурун эле иштеп чыккан, ошондуктан Transfer-Encoding-тү сокур көчүрбөңүз. Төмөнкү сервер жүк gzip менен коддолгон бойдон калса да өз жообун кадрлайт.

response.text жана андан кийинки UTF-8 коддоосу да көрүнүштү өзгөртөт жана каалаган экилик маалыматты сактай албайт. Ар бир жолдо жогорку жоопту жабыңыз же керектеңиз жана HTTP каталарын прокси келишимине ылайык иштетиңиз: бул мисал аларды өткөрүүнүн ордуна ыргытат.

Тектеш макалалар