استخدام عنوان IP لوكيل مع urllib3
اختر ProxyManager لوكيل HTTP، وافحص حقول استجابة urllib3 وراعِ إعادة المحاولة ومدير SOCKS المنفصل.
لتشخيص بسيط لوكيل 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.