Apturiet mūžīgi riņķojošu starpniekserveru rotācijas cilpu
Piešķiriet Python starpniekserveru kopumam ierobežotu mēģinājumu budžetu un atšķiriet savienojuma kļūmes no galamērķa atbildēm.
Starpniekserveru kopums var pārvērst vienkāršu pārtraukumu aizņemtā cilpā. Izvēlieties adresi, neizdodas, izvēlieties citu, atkal neizdodas. Ja katrs galapunkts nav sasniedzams, jo jūsu paša tīkls nedarbojas, adrešu maiņa nekad neizlabos cēloni.
Piešķiriet darbībai budžetu pirms pirmā starpniekservera izvēles no sava kopuma vai bezmaksas starpniekserveru saraksta: ierobežots mēģinājumu skaits, ierobežoti savienojuma un lasīšanas gaidīšanas laiki un visa uzdevuma termiņš. Requests taimauts pārvalda savu dokumentēto savienojuma vai lasīšanas uzvedību; tas pats par sevi neierobežo cilpu, kas turpina izdot jaunus pieprasījumus.
Izlemiet, kas ir pelnījis vēl vienu mēģinājumu
- Noraidīts starpniekservera savienojums var attaisnot cita galapunkta izmēģināšanu.
- Galamērķa atbildei nepieciešama sava interpretācija. HTTP kļūdas saņemšana pierāda, ka kāds pieprasījuma ceļš ir pabeigts.
- Starpniekservera autentifikācijas kļūme prasa pārbaudīt galapunktu un kontu, nevis sist vienus un tos pašus akreditācijas datus cauri augošam sarakstam.
Saglabājiet sākotnējo izņēmumu vai statusu kopā ar mēģinājuma ierakstu. Noslēguma ziņojums, kurā ir tikai “visi starpniekserveri neizdevās”, slēpj, vai kļūmēm vispār bija viens un tas pats cēlonis.
Katra starpniekservera veselības pārbaude pirms katra reālā pieprasījuma pievieno vēl vienu pieprasījumu un joprojām nevar garantēt, ka nākamais izdosies. Atkārtoti izmantojiet nesenāko veselības informāciju, kur tā atbilst uzdevumam, un pēc tam ļaujiet reālajai darbībai ziņot par savu rezultātu.
Atkārtots mēģinājums var atkārtot darbu
Tikai lasīšanas ieguvē parasti ir vienkāršāk pāriet uz citu starpniekserveri, nekā atkārtoti atskaņot iesniegumu. Ja savienojums pārtrūkst pēc pirkuma vai veidlapas iesnieguma nosūtīšanas, galamērķis to jau var būt apstrādājis. Pirms darba atkārtotas atskaņošanas ievērojiet pakalpojuma idempotences mehānismu un HTTP atkārtoto mēģinājumu noteikumus.
Kad budžets ir izsmelts, atgrieziet lietderīgu kļūdu. Darbs, kas apstājas ar pierādījumiem, ir vieglāk labojams nekā tāds, kas klusi turpina griezties, līdz kāds to pamana.