Profion procsi Python: pam mae Future.cancel() yn gadael edafedd i redeg
Deall pam nad yw canslo futures sy'n aros yn atal profion rhwydwaith gweithredol, a chyfyngu ras procsi heb honni ei fod yn profi iechyd y cyrchfan.
Mae un gweithiwr yn dod o hyd i brocsi defnyddiadwy. Rydych chi'n dychwelyd ei gyfeiriad, yn galw cancel ar y futures eraill, ac yn disgwyl i'r gweithgaredd rhwydwaith stopio. Efallai na fydd.
Gellir canslo Future cyn i'w callable ddechrau. Unwaith y mae edefyn eisoes yn gweithredu cais, nid yw canslo ei Future yn torri'r gweithrediad socket hwnnw. Mae angen gweithrediad rhwydwaith cyfyngedig a llwybr glanhau ei hun ar y gweithiwr.
Mae oes y gweithredwr yn bwysig hefyd. Mae gadael cyd-destun ThreadPoolExecutor yn aros i'w waith orffen. Gall dod o hyd i un canlyniad cyflym ac yna aros am sawl gweithiwr araf wneud cyfanswm oedi'r galwr yn edrych yn gwbl wahanol i latensi adroddwyd y buddugwr.
Cyfyngu'r ras cyn ei dechrau
- Cyfyngwch nifer y profion ar yr un pryd yn lle cyflwyno rhestr gyhoeddus heb ffin. Mae'r rhestr procsi am ddim yn darparu ymgeiswyr ar gyfer mewnbwn y profwr, gyda phrotocol pob pen draw yn cael ei gadw ar gyfer y gweithiwr.
- Rhowch bolisi cysylltu a darllen priodol i bob cais.
- Rhowch gyllideb penderfyniad gyffredinol i'r galwr.
- Diffiniwch pwy sy'n draenio neu'n cau canlyniadau gweithwyr sy'n goroesi'r penderfyniad.
Nid yw aros llai am Future yr un peth â gwneud ei gais sylfaenol yn fyrrach. Yn yr un modd, nid yw gadael y canlyniad yn rhyddhau pob adnodd rhwydwaith ar unwaith.
Mae'r canlyniad llwyddiannus cyntaf hefyd yn unig y prawf llwyddiannus cyntaf. Gall ddibynnu ar amserlennu, cysylltiadau wedi'u cache, a'r gyrchfan prawf benodol. Nid yw'n sefydlu bod y pen draw yn gyflymaf yn gyffredinol nac y bydd y gwaith go iawn yn llwyddo.
Yn aml mae pwll bach a gedwir gydag arsylwadau diweddar yn symlach na rasio'r rhestr gyfan cyn pob lawrlwythiad. Defnyddiwch ganlyniad y gweithrediad go iawn i ddiweddaru'r cofnod, gyda pholisi adfer rheoledig ar gyfer methiannau. Dylai'r cyn-hedfan ennill ei gost yn hytrach na dyblu pob tasg o arfer.