Pagpili ng round-robin proxy sa Python gamit ang itertools.cycle
Gumamit ng umuulit na iterator para sa mahuhulaang pagpili ng proxy mula sa fixed na pool, habang pinaghihiwalay ang pagpili sa pagpapatupad ng kahilingan at sa kalusugan.
Para sa fixed na pool, ang round-robin na pagpili ay maaaring kaaya-ayang maikli:
from itertools import cycle
choices = cycle([
"http://proxy-a.example:8080",
"http://proxy-b.example:8080",
"http://proxy-c.example:8080",
])
endpoint = next(choices)
Palitan ang mga halimbawang URL ng mga HTTP endpoint mula sa iyong serbisyo o sa listahan ng HTTP proxy. Ang magkakasunod na tawag ay nagbabalik ng A, B, C at pagkatapos ay A muli. Gamitin ang napiling halaga kapag isinasaayos ang susunod na kahilingan. Ang muling paglikha ng iterator para sa bawat kahilingan ay magpapanibago ng pagkakasunod-sunod. Sa Requests, ipasa ang napiling endpoint sa kahilingan.
Kung mas gusto mo ang listahan, ilipat ang una nitong item sa dulo. Ang pool.append(pool.pop()) ay nag-aalis ng huling item at agad itong ibinabalik; hindi kailanman nagbabago ang unang item. Ang operasyon ng pila ay pool.append(pool.pop(0)), bagaman ang pag-alis sa harap ay nagbabago ng posisyon ng natitirang mga item sa listahan.
Ang iterator ay may sadyang mababang gawain. Hindi ito nagsusuri ng kakayahang magamit, hindi nag-aalis ng mga nabigong entry at hindi ginagarantiyahan ang ibang pampublikong labasan. Maraming endpoint ang maaaring maghati sa isang panlabas na address.
Panatilihin ang patakaran sa pagsubok muli at mga update sa pool sa labas ng maliit na tagapili na ito. Ang ibinahaging iterator ay nangangailangan din ng sadyang modelo ng pagmamay-ari sa sabay-sabay na code upang ang napiling endpoint ay manatiling nakakabit sa operasyong tumanggap nito.