gzip বাইটবোৰ তেওঁলোকক বৰ্ণনা কৰা হেডাৰৰ সৈতে আগবঢ়াই পঠাওক
Requests-ভিত্তিক প্ৰক্সিত এনকোড কৰা বা ডিকোড কৰা পে'লোড বাছনি কৰক, তাৰ পিছত ডাউনষ্ট্ৰিম প্ৰতিক্ৰিয়াক মিলা content হেডাৰ আৰু নিজৰ ফ্ৰেমিং দিয়ক।
যদি 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 ত্ৰুটি সামৰ্থন কৰক: এই উদাহৰণে সিহঁতক আগবঢ়োৱাৰ পৰিৱৰ্তে উত্থাপন কৰে।