Kontrollet e proxy-t në Python: pse Future.cancel() i lë fijet duke punuar
Kuptoni pse anulimi i futures në pritje nuk i ndal kontrollet aktive të rrjetit dhe kufizoni një garë proxy pa pretenduar se vërteton shëndetin e destinacionit.
Një worker gjen një proxy të përdorshëm. Ju ktheni adresën e tij, thirrni cancel mbi futures e tjera dhe prisni që aktiviteti i rrjetit të ndalet. Mund të mos ndalet.
Një Future mund të anulohet përpara se callable-i i tij të nisë. Pasi një fije po ekzekuton tashmë një kërkesë, anulimi i Future-it të saj nuk e ndërpret atë operacion socket. Worker-i ka nevojë për operacionin e vet të kufizuar të rrjetit dhe një rrugë pastrimi.
Edhe jetëgjatësia e executor-it ka rëndësi. Dalja nga një kontekst ThreadPoolExecutor pret që puna e tij të përfundojë. Gjetja e një rezultati të shpejtë dhe më pas pritja e disa worker-ëve të ngadaltë mund ta bëjë vonesën totale të thirrësit të mos ngjajë aspak me latencën e raportuar nga fituesi.
Kufizoni garën përpara se të nisë
- Kufizoni numrin e kontrolleve të njëkohshme në vend që të dorëzoni një listë publike të pakufizuar. Lista falas e proxy-ve ofron kandidatë për hyrjen e kontrolluesit, ndërsa protokolli i secilit endpoint ruhet për worker-in.
- Jepni çdo kërkese një politikë të përshtatshme lidhjeje dhe leximi.
- Jepni thirrësit një buxhet të përgjithshëm vendimi.
- Përcaktoni kush i zbraz ose i mbyll rezultatet e worker-ëve që mbijetojnë vendimin.
Pritja më e shkurtër për një Future nuk është e njëjtë me shkurtimin e kërkesës së tij bazë. Po ashtu, braktisja e rezultatit nuk i liron menjëherë të gjitha burimet e rrjetit.
Rezultati i parë i suksesshëm është gjithashtu vetëm kontrolli i parë i suksesshëm. Ai mund të varet nga planifikimi, lidhjet e ruajtura në cache dhe destinacioni i veçantë i kontrollit. Nuk vërteton se endpoint-i është universalisht më i shpejti ose se detyra reale do të ketë sukses.
Shpesh një pishinë e vogël e mbajtur me vëzhgime të fundit është më e thjeshtë sesa të garosh me të gjithë listën përpara çdo shkarkimi. Përdorni rezultatin e operacionit real për të përditësuar rekordin, me një politikë të kontrolluar rikuperimi për dështimet. Kontrolli paraprak duhet të fitojë koston e tij në vend që të dyfishojë çdo detyrë nga zakoni.