För en fast pool kan round-robin-val vara behagligt kort:

from itertools import cycle

choices = cycle([
    "http://proxy-a.example:8080",
    "http://proxy-b.example:8080",
    "http://proxy-c.example:8080",
])

endpoint = next(choices)

Byt ut exempel-URL:erna mot HTTP-slutpunkter från din tjänst eller från HTTP-proxylistan. På varandra följande anrop returnerar A, B, C och sedan A igen. Använd det valda värdet när du konfigurerar nästa request. Om iteratorn skapas om för varje request startar sekvensen om. Med Requests, skicka den valda slutpunkten in i requesten.

Om du föredrar en lista, flytta dess första element till slutet. pool.append(pool.pop()) tar bort det sista elementet och lägger tillbaka det direkt; det första elementet ändras aldrig. Köoperationen är pool.append(pool.pop(0)), även om borttagning framifrån förskjuter de återstående listelementen.

Iteratorn har en medvetet anspråkslös uppgift. Den kontrollerar inte tillgänglighet, tar inte bort misslyckade poster och garanterar inte en annan offentlig utgång. Flera slutpunkter kan dela en utåtgående adress.

Håll retry-policyn och poppuppdateringarna utanför denna lilla väljare. En delad iterator behöver också en medveten ägarmodell i samtidig kod, så att den valda slutpunkten förblir knuten till operationen som tog emot den.

Relaterade artiklar