Ar gyfer pwll sefydlog, gall dewis rownd-robin fod yn braf o fyr:

from itertools import cycle

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

endpoint = next(choices)

Amnewidiwch yr URLau enghreifftiol â phwyntiau terfyn HTTP o'ch gwasanaeth neu o'r rhestr proxy HTTP. Mae galwadau olynol yn dychwelyd A, B, C, ac yna A eto. Defnyddiwch y gwerth a ddewiswyd wrth ffurfweddu'r cais nesaf. Byddai creu'r iterator eto ar gyfer pob cais yn ailgychwyn y dilyniant. Gyda Requests, trowch y pwynt terfyn a ddewiswyd i'r cais.

Os yw rhestr yn well gennych, symudwch ei heitem gyntaf i'r diwedd. Mae pool.append(pool.pop()) yn tynnu'r eitem olaf ac yn ei rhoi'n syth yn ôl; ni fydd yr eitem gyntaf byth yn newid. Y gweithrediad ciw yw pool.append(pool.pop(0)), er bod tynnu o'r blaen yn symud gweddill elfennau'r rhestr.

Mae gan yr iterator dasg fwriadol ostyngedig. Nid yw'n gwirio argaeledd, nid yw'n tynnu cofnodion sydd wedi methu ac nid yw'n gwarantu allanfa gyhoeddus wahanol. Gall sawl pwynt terfyn rannu un cyfeiriad allanol.

Cadwch bolisi ailgynnig a diweddariadau'r pwll y tu allan i'r detholydd bach hwn. Mae angen model perchnogaeth bwriadol mewn cod cyfochrog ar iterator a rennir hefyd, fel bod y pwynt terfyn a ddewiswyd yn aros ynghlwm wrth y gweithrediad a'i derbyniodd.

Erthyglau cysylltiedig