Један worker пронађе употребљив прокси. Вратите његову адресу, позовете cancel на осталим futures и очекујете да ће мрежна активност престати. Можда неће.

Future се може отказати пре него што његов callable почне. Када нит већ извршава захтев, отказивање њеног Future не прекида ту socket операцију. Worker-у је потребна сопствена ограничена мрежна операција и пут за чишћење.

Животни век executor-а је такође важан. Напуштање контекста ThreadPoolExecutor чека да његов рад заврши. Проналажење једног брзог резултата и затим чекање на неколико спорих worker-а може учинити укупно кашњење позиваоца потпуно другачијим од пријављене латенције победника.

Ограничите трку пре него што почне

  • Ограничите број истовремених провера уместо подношења неограничене јавне листе. Бесплатна листа проксија даје кандидате за улаз проверавача, а протокол сваке крајње тачке се задржава за worker.
  • Дајте сваком захтеву одговарајућу политику повезивања и читања.
  • Дајте позиваоцу укупан буџет за одлуку.
  • Дефинишите ко испушта или затвара резултате worker-а који надживе одлуку.

Мање чекања на Future није исто што и скраћивање његовог основног захтева. Исто тако, напуштање резултата не ослобађа одмах све мрежне ресурсе.

Први успешни резултат је такође само прва успешна провера. Може зависити од распоређивања, кешираних веза и конкретног одредишта провере. Не доказује да је крајња тачка универзално најбржа ни да ће стварни задатак успети.

Често је мали задржани скуп са скорашњим запажањима једноставнији од трке са целом листом пре сваког преузимања. Користите резултат стварне операције за ажурирање записа, уз контролисану политику опоравка за неуспехе. Претходна провера би требало да заради свој трошак уместо да удвостручује сваки задатак из навике.

Повезани чланци