الوكيل B، ثم الوكيل B مرة أخرى، ثم الوكيل A. تبدو سجلاتك مريبة، لكن المنتقي العشوائي مسموح له أن يفعل ذلك بالضبط.

الاختيار من القائمة نفسها في كل طلب يسمح بالتكرار. وعند وجود نقطتي نهاية متساويتين في الاحتمال، فإن الاختيار المستقل التالي لديه فرصة واحد إلى اثنين لمطابقة الاختيار السابق. وسلسلة قصيرة تحتوي على تكرارات ليست دليلاً على أن المنتقي تجاهل القائمة.

اختر السلوك الذي تحتاجه فعلاً

المتطلبقاعدة الاختيار
كل اختيار مستقلاختر من القائمة المؤهلة في كل مرة
استخدم كل نقطة نهاية مرة واحدة قبل البدء من جديداخلط نسخة، استهلكها، ثم ابدأ دفعة أخرى
تجنب نقطة النهاية السابقة مباشرةاستبعد تلك النقطة قبل الاختيار

بالنسبة للسياسة الأخيرة، تعامل مع حالة نقطة النهاية الواحدة صراحةً:

candidates = [endpoint for endpoint in eligible if endpoint != previous]
if not candidates:
    raise RuntimeError("No different eligible proxy is available")
selected = random.choice(candidates)

تفترض هذه القطعة أن random مستورد وأن قائمة نقاط النهاية قد تم التحقق منها مسبقاً. ويمكن لمجموعة عامة أن تبدأ بـقائمة الوكلاء المجانية عندما تتوافق بروتوكولاتها مع العميل النهائي؛ ولا تزال قاعدة الاختيار هذه تتحكم في التكرار. أما الانتظار أو إعادة استخدام نقطة النهاية الوحيدة أو التوقف فهي سياسة تطبيق. والحلقة اللانهائية التي تنتظر قيمة عشوائية مختلفة لا يمكنها حل قائمة تحتوي على خيار واحد مميز فقط.

في الموزِّع المتزامن، يحتاج اختيار نقطة النهاية السابقة وتسجيلها أيضاً إلى ملكية منسقة. وإلا فقد يستبعد عاملان القيمة القديمة ويختاران القيمة التالية نفسها.

أخيراً، تتعلق هذه القاعدة بهوية نقطة النهاية. فنقطتا نهاية مختلفتان قد تؤديان إلى مخرج عام واحد، وقد تؤدي نقطة نهاية مزود واحدة إلى عدة مخارج. سجّل ذلك بشكل منفصل قبل أن تقرر أن التدوير معطوب.

مقالات ذات صلة