Ein valari kann ringkoyra fullkomiliga og velur kortini fyrsta proxyið. Mistakið er at gera av óviti ein nýggjan valara fyri hvønn fyrispurning, tí tað nullstillar teljaran áðrenn hann hevur eitt annað val.

Bygg valaran eina ferð og hald honum saman við transportinum. HTTP-proxy listin kann veita almennar HTTP-uppskot fyri URL-økið, tá fyrispurningarnir loyva almennum millumgongum. Byrja við eini longu váttgóðkenda, ikki tómari listu av proxy-URL’um:

func rotatingProxy(urls []*url.URL) func(*http.Request) (*url.URL, error) {
    var mu sync.Mutex
    next := 0
    return func(*http.Request) (*url.URL, error) {
        mu.Lock()
        selected := urls[next]
        next = (next + 1) % len(urls)
        mu.Unlock()
        return selected, nil
    }
}

Umgefandi forritið má avvísa eina tóma listu, váttgóðkenna URL’urnar og nýta vanligu innflutningarnar net/http, net/url og sync. Listan eigur at verða óbroytt, meðan hesin valarin nýtir hana, ella verða skift út gjøgnum eina serstaka samstillaða mannagongd.

Fest tað afturkomandi funkið at einum varðveittum http.Transport. Mutexið verjur valraðfestuna millum samtíðar afturkall. Tað krevur ikki, at ein lás verður hildin, meðan ein seint netfyrispurningur verður liðugur.

Nýt ikki eina rás bara til at prenta hana

At kalla valaran aftur fyri eina greiningarboð flytir teljaran aftur. Henda útskriftin kann lýsa næsta uppskot í staðin fyri tað uppskot, sum fyrispurningurin, tú kanar, brúkti. Skráset valið inni í veruliga afturkallinum við einum tryggum endapunkts-identifikatori.

Eitt afturkall er ikki prógv fyri, at ein fyrispurningur varð sendur væl. Afturleiðingar ella eyka transportroyndir kunnu gera eina einfalda hógun «eitt forritskall, eitt val» torføra. Um eitt arbeiðsflæði má halda eina rás gjøgnum fleiri handlingar, vel tá rásina á markinum av arbeiðsflæðinum í staðin fyri at nýta eitt altjóða ringkoyrandi afturkall.

Ringkoyring lovar heldur ikki ymisk almenn útgang. Hon raðfestir endapunktar. Endaliga samsemi verður verandi eginleiki hjá tí leið, sum hvør endapunktur veitir.

Skyldar greinar