Python дээр itertools.cycle ашиглан round-robin прокси сонголт
Тогтмол сангаас урьдчилан таамаглах боломжтой прокси сонголт хийхийн тулд давтагдах итератор ашиглаж, сонголтыг хүсэлтийн гүйцэтгэл болон эрүүл мэндээс тусгаар байлгаарай.
Тогтмол сангийн хувьд 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)) боловч эхнээс хасах нь үлдсэн жагсаалтын элементүүдийг шилжүүлнэ.
Итератор зориуд даруухан үүрэгтэй. Энэ нь бэлэн байдлыг шалгахгүй, бүтэлгүй бичлэгүүдийг устгахгүй, өөр гадаад гарц баталгаажуулахгүй. Хэд хэдэн төгсгөлийн цэг нэг гадаад хаягийг хуваалцаж болно.
Дахин оролдлогын бодлого болон сангийн шинэчлэлтийг энэ жижиг сонгогчоос гадуур байлгаарай. Хуваалцсан итераторт мөн зэрэгцээ код дахь зориудын эзэмшлийн загвар хэрэгтэй бөгөөд ингэснээр сонгосон төгсгөлийн цэг түүнийг хүлээн авсан үйлдэлтэй холбоотой хэвээр байна.