Python պրոքսի ստուգումներ. ինչու Future.cancel() -ը թողնում է հոսքերը աշխատող
Հասկացեք, թե ինչու սպասող future-ների չեղարկումը չի կանգնեցնում ակտիվ ցանցային ստուգումները, և սահմանափակեք պրոքսի մրցավազքը՝ չպնդելով, թե այն ապացուցում է նպատակակետի առողջությունը։
Մեկ worker գտնում է օգտագործելի պրոքսի։ Դուք վերադարձնում եք նրա հասցեն, cancel եք կանչում մյուս future-ների վրա և սպասում, որ ցանցային ակտիվությունը կդադարի։ Կարող է չդադարել։
Future-ը կարելի է չեղարկել նախքան նրա callable-ի մեկնարկը։ Երբ հոսքն արդեն կատարում է հարցում, նրա Future-ի չեղարկումը չի ընդհատում այդ socket գործողությունը։ Worker-ին անհրաժեշտ են իր սեփական սահմանափակ ցանցային գործողությունը և մաքրման ուղին։
Կարևոր է նաև executor-ի կյանքի տևողությունը։ ThreadPoolExecutor-ի կոնտեքստը թողնելը սպասում է նրա աշխատանքի ավարտին։ Մեկ արագ արդյունք գտնելը և այնուհետև մի քանի դանդաղ worker-ների սպասելը կարող է կանչողի ընդհանուր ուշացումը բոլորովին այլ տեսք տալ, քան հաղթողի հաղորդած լատենտությունը։
Սահմանափակեք մրցավազքը նախքան այն սկսելը
- Սահմանափակեք միաժամանակյա ստուգումների քանակը՝ անսահմանափակ հանրային ցանկ ներկայացնելու փոխարեն։ Անվճար պրոքսիների ցանկը տրամադրում է թեկնածուներ ստուգիչի մուտքի համար, ընդ որում յուրաքանչյուր վերջնակետի արձանագրությունը պահպանվում է worker-ի համար։
- Տվեք յուրաքանչյուր հարցման համապատասխան միացման և ընթերցման քաղաքականություն։
- Տվեք կանչողին որոշման ընդհանուր բյուջե։
- Սահմանեք, թե ով է դատարկում կամ փակում որոշումից ավելի երկար ապրող worker-ների արդյունքները։
Future-ին ավելի քիչ սպասելը նույնը չէ, ինչ նրա հիմքում ընկած հարցումը կարճացնելը։ Նույն կերպ, արդյունքից հրաժարվելը անմիջապես չի ազատում բոլոր ցանցային ռեսուրսները։
Առաջին հաջող արդյունքը նույնպես միայն առաջին հաջող ստուգումն է։ Այն կարող է կախված լինել ժամանակացույցից, քեշավորված միացումներից և ստուգման կոնկրետ նպատակակետից։ Այն չի հաստատում, որ վերջնակետը համընդհանուր ամենաարագն է կամ որ իրական առաջադրանքը կհաջողվի։
Հաճախ վերջին դիտարկումներով փոքր պահվող լողավազանն ավելի պարզ է, քան յուրաքանչյուր ներբեռնումից առաջ ամբողջ ցանկի հետ մրցելը։ Օգտագործեք իրական գործողության արդյունքը գրառումը թարմացնելու համար՝ ձախողումների համար վերահսկվող վերականգնման քաղաքականությամբ։ Նախնական ստուգումը պետք է արդարացնի իր ծախսը, այլ ոչ թե սովորույթով կրկնապատկի յուրաքանչյուր առաջադրանք։