اختيار البروكسي بنظام round-robin في Python باستخدام itertools.cycle
استخدم مكرِّرًا متكررًا لاختيار بروكسي يمكن التنبؤ به من مجموعة ثابتة، مع فصل الاختيار عن تنفيذ الطلب وعن الحالة الصحية.
بالنسبة إلى مجموعة ثابتة، يمكن أن يكون اختيار round-robin صغيرًا بشكل مريح:
from itertools import cycle
choices = cycle([
"http://proxy-a.example:8080",
"http://proxy-b.example:8080",
"http://proxy-c.example:8080",
])
endpoint = next(choices)
استبدل عناوين URL النموذجية بنقاط HTTP من خدمتك أو من قائمة بروكسي HTTP. تعيد الاستدعاءات المتتالية A ثم B ثم C ثم A مجددًا. استخدم القيمة المختارة عند إعداد الطلب التالي. إعادة إنشاء المكرِّر لكل طلب ستعيد بدء التسلسل. مع Requests، مرّر النقطة المختارة إلى الطلب.
إذا كنت تفضّل قائمة، فانقل العنصر الأول إلى الخلف. pool.append(pool.pop()) يزيل العنصر الأخير ويعيده مباشرةً؛ أما العنصر الأول فلا يتغير أبدًا. عملية الطابور هي pool.append(pool.pop(0))، لكن الإزالة من المقدمة تُزحزح عناصر القائمة المتبقية.
للمكرِّر مهمة متواضعة عن قصد. فهو لا يتحقق من التوفر ولا يحذف المدخلات الفاشلة ولا يضمن منفذًا عامًا مختلفًا. قد تتشارك عدة نقاط عنوانًا خارجيًا واحدًا.
أبقِ سياسة إعادة المحاولة وتحديثات المجموعة خارج هذا المحدِّد الصغير. كما يحتاج المكرِّر المشترك إلى نموذج ملكية مقصود في الشيفرة المتزامنة حتى تبقى النقطة المختارة مرتبطة بالعملية التي استلمتها.