Requests અને iter_content સાથે પ્રોક્સી દ્વારા ડાઉનલોડ કરો
સામાન્ય સ્થિતિ-તપાસ, સફાઈ અને આંશિક આઉટપુટ માટે જાણી જોઈને નીતિ રાખીને Requests પ્રતિસાદનો ધીમે ધીમે ઉપયોગ કરો.
with session.get(url, stream=True, proxies=routes,
timeout=(5, 30)) as response:
response.raise_for_status()
with open(part_path, 'wb') as output:
for chunk in response.iter_content(chunk_size=64 * 1024):
if chunk:
output.write(chunk)
આ પેટર્ન એપ્લિકેશનના હાલના Requests સેશન, પ્રોક્સી રૂટ, URL અને કામચલાઉ આઉટપુટ પાથ સાથે વાપરો. જાહેર HTTP રૂટ માટે, HTTP પ્રોક્સી સૂચિ તમારા પ્રોક્સી મેપિંગ માટે ઉમેદવાર સરનામાં પૂરા પાડે છે. સ્ટ્રીમિંગ પેટર્ન response.content મેળવીને પછી બીજી પૂર્ણ-કદની વસ્તુ લખવાને બદલે શરીરનો ધીમે ધીમે ઉપયોગ કરે છે.
ડાઉનલોડ દરમિયાન તે ગુણધર્મ જાળવો: stream=True શરીરને મુલતવી રાખે છે, પણ પછી response.content ઍક્સેસ કરવાથી હજી પણ બધું મેમરીમાં એકઠું થઈ શકે છે. iter_content નું ચંક કદ વાંચનની પસંદગી છે, વેબસાઇટ કે પ્રોક્સી પર HTTP ચંક્ડ ટ્રાન્સફર કોડિંગની વિનંતી નથી.
પ્રતિસાદ સંદર્ભ-વ્યવસ્થાપક પ્રતિસાદ બંધ કરે છે, ભલે લેખન નિષ્ફળ જાય અથવા એપ્લિકેશન વહેલી અટકે. ઉદાહરણની ટાઇમઆઉટ જોડી આખા ટ્રાન્સફર માટે વોલ-ક્લોક સમયમર્યાદા નથી; જરૂર મુજબ ડાઉનલોડની જીવનકાળ નીતિ અલગ રીતે સેટ કરો.
સફળ ઉપયોગ પછી, અંતિમ નામ પ્રકાશિત કરતાં પહેલાં એપ્લિકેશન જે આર્ટિફેક્ટની અપેક્ષા રાખે છે તે ચકાસો. વિક્ષેપ પડે તો આંશિક ફાઇલ ફક્ત જાણી જોઈને પુનઃપ્રારંભ નીતિ હેઠળ રાખો, દૂરના પ્રતિનિધિત્વને ઓળખતા મેટાડેટા સાથે. ખાલી ન હોય તેવી કામચલાઉ ફાઇલ સફળ ડાઉનલોડ નથી.