ទាញយកតាមរយៈប្រូកស៊ីដោយ 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 ជាដុំៗ នៅគេហទំព័រ ឬប្រូកស៊ីទេ។
អ្នកគ្រប់គ្រងបរិបទនៃការឆ្លើយតបបិទការឆ្លើយតប ទោះបីការសរសេរបរាជ័យ ឬកម្មវិធីឈប់មុនក៏ដោយ។ គូពេលវេលាកំណត់ជាឧទាហរណ៍ មិនមែនជាពេលវេលាកំណត់ពិតសម្រាប់ការផ្ទេរទាំងមូលទេ។ កំណត់គោលនយោបាយអាយុកាលនៃការទាញយកដោយឡែកតាមតម្រូវការ។
បន្ទាប់ពីប្រើប្រាស់ដោយជោគជ័យ សូមពិនិត្យវត្ថុដែលកម្មវិធីរំពឹង មុនពេលផ្សព្វផ្សាយឈ្មោះចុងក្រោយរបស់វា។ នៅពេលរំខាន រក្សាឯកសារដោយផ្នែកតែក្រោមគោលនយោបាយបន្តដែលមានចេតនា ជាមួយទិន្នន័យមេតាដែលកំណត់តំណាងពីចម្ងាយ។ ឯកសារបណ្តោះអាសន្នដែលមិនទទេ មិនមែនជាការទាញយកជោគជ័យទេ។