ჩამოტვირთვა პროქსის მეშვეობით 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 ნაწილებადი გადაცემის კოდირების მოთხოვნა საიტზე ან პროქსიზე.
პასუხის კონტექსტის მენეჯერი პასუხს ხურავს მაშინაც, თუ ჩაწერა ვერ მოხერხდა ან აპლიკაცია ადრე შეჩერდა. საილუსტრაციო დროის ზღვრების წყვილი მთელი გადაცემისთვის რეალური დროის ვადა არ არის; დააყენეთ ჩამოტვირთვის სიცოცხლის ხანგრძლივობის პოლიტიკა ცალკე, საჭიროებისამებრ.
წარმატებული მოხმარების შემდეგ, საბოლოო სახელის გამოქვეყნებამდე შეამოწმეთ აპლიკაციის მოსალოდნელი არტეფაქტი. შეწყვეტისას ნაწილობრივი ფაილი შეინახეთ მხოლოდ განზრახი გაგრძელების პოლიტიკით, მეტამონაცემებით, რომლებიც შორეულ წარმოდგენას იდენტიფიცირებს. არაცარიელი დროებითი ფაილი წარმატებული ჩამოტვირთვა არ არის.