انتخاب پروکسی round-robin در پایتون با 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)) است، هرچند حذف از ابتدا بقیهٔ عناصر فهرست را جابهجا میکند.
تکرارگر عمداً وظیفهای فروتن دارد. دسترسپذیری را بررسی نمیکند، ورودیهای ناموفق را حذف نمیکند و خروج عمومی متفاوتی را تضمین نمیکند. چند نقطه پایانی میتوانند یک نشانی بیرونی را به اشتراک بگذارند.
سیاست تلاش دوباره و بهروزرسانی استخر را بیرون از این انتخابکنندهٔ کوچک نگه دارید. تکرارگر مشترک هم به مدل مالکیت عامدانه در کد همروند نیاز دارد تا نقطه پایانی انتخابشده به عملیاتی که آن را دریافت کرده وابسته بماند.