សម្រាប់ការពិនិត្យប្រូកស៊ី urllib3 តូចមួយ ប្រើ ProxyManager ដោយបិទការសាកល្បងឡើងវិញ។ វារាយការណ៍ការសាកល្បងដំបូង ជំនួសការចំណាយពេលបន្ថែមលើធាតុដែលលែងដំណើរការ។ ក្នុងគម្រោងគ្រប់គ្រងដោយ uv៖

uv add urllib3

ជំនួសចំណុចចុងឯកសារដោយប្រូកស៊ី HTTP ពីសេវារបស់អ្នក ឬបញ្ជីប្រូកស៊ី HTTP ហើយផ្ញើសំណើតាមកម្មវិធីគ្រប់គ្រងនោះ៖

import urllib3

proxy = urllib3.ProxyManager(
    "http://203.0.113.10:8080",
    timeout=urllib3.Timeout(connect=5, read=10),
    retries=False,
)

try:
    response = proxy.request("GET", "https://example.com/")
    print(response.status)
    print(response.data.decode("utf-8", errors="replace")[:200])
finally:
    proxy.clear()

អាន response.status មុន រួចពិនិត្យ response.data។ ទាំងនេះជាវាលរបស់ urllib3។ status_code និង text តាមបែប Requests មិនមែនជំនួសទេ។ ការបដិសេធរបស់គេហទំព័រអាចមកតាមប្រូកស៊ីដែលដំណើរការ។ ផ្ទុយទៅវិញ ករណីលើកលែងមុនចម្លើយបង្ហាញថាសំណើមិនបានបញ្ចប់។

retries=False ជាជម្រើសសម្រាប់ពិនិត្យ មិនមែនគោលការណ៍សាកល្បងឡើងវិញសម្រាប់ប្រើប្រាស់ពិតទេ។ ការកំណត់តភ្ជាប់ 5 វិនាទី និងអាន 10 វិនាទីកំណត់ដំណាក់កាលរៀងៗខ្លួន មិនបូកជាកម្រិតពេលសរុប 15 វិនាទីដែលធានាទេ។ DNS និងវឌ្ឍនភាពចម្លើយអាចប៉ះពាល់ពេលរង់ចាំសរុប។

ឧទាហរណ៍ផ្ទុកតួចម្លើយជាមុន ហើយសម្អាតក្រុមការតភ្ជាប់របស់កម្មវិធីគ្រប់គ្រងនៅចុងក្រោយ។ សម្រាប់សំណើដដែលៗតាមចំណុចដូចគ្នា រក្សាកម្មវិធីគ្រប់គ្រងរហូតដល់ចប់ការងារ ដើម្បីប្រើការតភ្ជាប់ឡើងវិញ។ ការប្ដូរទៅ preload_content=False ផ្លាស់ប្ដូរវដ្តជីវិត៖ អ្នកហៅត្រូវអាន និងដោះលែងចម្លើយស្ទ្រីម។

ជ្រើសកម្មវិធីគ្រប់គ្រងឱ្យត្រូវនឹងសេវាដែលកំពុងស្ដាប់។ PoolManager ធម្មតាមិនស្គាល់ប្រូកស៊ីដោយសាររក្សា URL នៅកន្លែងផ្សេងទេ។ SOCKS ប្រើ urllib3.contrib.socks.SOCKSProxyManager និងភាពអាស្រ័យជាជម្រើសរបស់វា។ កូដខាងលើតាមផ្លូវ HTTP ProxyManager។

អត្ថបទពាក់ព័ន្ធ