For ein fast pool kan round-robin-val vere behageleg 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)

Bytt ut døme-URL-ane med HTTP-endepunkt frå tenesta di eller frå HTTP-proxylista. Påfølgjande kall returnerer A, B, C og deretter A igjen. Bruk den valde verdien når du set opp den neste førespurnaden. Vert iteratoren laga på nytt for kvar førespurnad, startar sekvensen på nytt. Med Requests, send det valde endepunktet inn i førespurnaden.

Om du føretrekkjer ei liste, flytt det første elementet hennar til slutten. pool.append(pool.pop()) fjernar det siste elementet og legg det rett tilbake; det første elementet blir aldri endra. Køoperasjonen er pool.append(pool.pop(0)), men fjerning framme forskyv dei resterande listeelementa.

Iteratoren har ei medvite beskjeden oppgåve. Han sjekkar ikkje tilgjenge, fjernar ikkje mislukka oppføringar og garanterer ikkje ein annan offentleg utgang. Fleire endepunkt kan dela éi utandørs adresse.

Hald retry-policyen og pooloppdateringar utanfor denne vesle veljaren. Ein delt iterator treng òg ein medviten eigarskapsmodell i samtidig kode, slik at det valde endepunktet blir verande knytt til operasjonen som tok imot det.

Relaterte artiklar