Python ਪ੍ਰੌਕਸੀ ਜਾਂਚਾਂ: Future.cancel() ਥ੍ਰੈਡਾਂ ਨੂੰ ਕਿਉਂ ਚੱਲਦਿਆਂ ਛੱਡਦਾ ਹੈ
ਸਮਝੋ ਕਿ ਉਡੀਕ ਰਹੇ futures ਨੂੰ ਰੱਦ ਕਰਨ ਨਾਲ ਸਰਗਰਮ ਨੈੱਟਵਰਕ ਜਾਂਚਾਂ ਕਿਉਂ ਨਹੀਂ ਰੁਕਦੀਆਂ, ਅਤੇ ਪ੍ਰੌਕਸੀ ਦੌੜ ਨੂੰ ਸੀਮਤ ਕਰੋ ਬਿਨਾਂ ਇਹ ਦਾਅਵਾ ਕੀਤੇ ਕਿ ਇਹ ਮੰਜ਼ਿਲ ਦੀ ਸਿਹਤ ਸਾਬਤ ਕਰਦੀ ਹੈ।
ਇੱਕ worker ਵਰਤੋਂਯੋਗ ਪ੍ਰੌਕਸੀ ਲੱਭਦਾ ਹੈ। ਤੁਸੀਂ ਉਸਦਾ ਪਤਾ ਵਾਪਸ ਕਰਦੇ ਹੋ, ਹੋਰ futures 'ਤੇ cancel ਕਾਲ ਕਰਦੇ ਹੋ, ਅਤੇ ਉਮੀਦ ਕਰਦੇ ਹੋ ਕਿ ਨੈੱਟਵਰਕ ਗਤੀਵਿਧੀ ਰੁਕ ਜਾਵੇਗੀ। ਹੋ ਸਕਦਾ ਹੈ ਨਾ ਰੁਕੇ।
Future ਨੂੰ ਇਸਦੇ callable ਦੇ ਸ਼ੁਰੂ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ ਰੱਦ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਜਦੋਂ ਇੱਕ ਥ੍ਰੈਡ ਪਹਿਲਾਂ ਹੀ ਬੇਨਤੀ ਚਲਾ ਰਿਹਾ ਹੋਵੇ, ਤਾਂ ਉਸਦੇ Future ਨੂੰ ਰੱਦ ਕਰਨਾ ਉਸ socket ਕਾਰਵਾਈ ਨੂੰ ਨਹੀਂ ਰੋਕਦਾ। worker ਨੂੰ ਆਪਣੀ ਸੀਮਤ ਨੈੱਟਵਰਕ ਕਾਰਵਾਈ ਅਤੇ ਸਫ਼ਾਈ ਮਾਰਗ ਚਾਹੀਦਾ ਹੈ।
executor ਦੀ ਉਮਰ ਵੀ ਮਹੱਤਵਪੂਰਨ ਹੈ। ThreadPoolExecutor ਸੰਦਰਭ ਛੱਡਣਾ ਉਸਦੇ ਕੰਮ ਦੇ ਪੂਰਾ ਹੋਣ ਦੀ ਉਡੀਕ ਕਰਦਾ ਹੈ। ਇੱਕ ਤੇਜ਼ ਨਤੀਜਾ ਲੱਭ ਕੇ ਫਿਰ ਕਈ ਹੌਲੀ workers ਦੀ ਉਡੀਕ ਕਰਨਾ ਕਾਲਰ ਦੀ ਕੁੱਲ ਦੇਰੀ ਨੂੰ ਜੇਤੂ ਦੀ ਰਿਪੋਰਟ ਕੀਤੀ ਲੈਟੈਂਸੀ ਵਰਗਾ ਬਿਲਕੁਲ ਨਹੀਂ ਦਿਖਾ ਸਕਦਾ।
ਦੌੜ ਸ਼ੁਰੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਸੀਮਤ ਕਰੋ
- ਅਣਸੀਮਤ ਜਨਤਕ ਸੂਚੀ ਜਮ੍ਹਾਂ ਕਰਨ ਦੀ ਬਜਾਏ ਇੱਕੋ ਸਮੇਂ ਹੋਣ ਵਾਲੀਆਂ ਜਾਂਚਾਂ ਦੀ ਗਿਣਤੀ ਸੀਮਤ ਕਰੋ। ਮੁਫ਼ਤ ਪ੍ਰੌਕਸੀ ਸੂਚੀ ਜਾਂਚਕਰਤਾ ਦੇ ਇਨਪੁਟ ਲਈ ਉਮੀਦਵਾਰ ਦਿੰਦੀ ਹੈ, ਹਰ endpoint ਦਾ ਪ੍ਰੋਟੋਕੋਲ worker ਲਈ ਰੱਖਿਆ ਜਾਂਦਾ ਹੈ।
- ਹਰ ਬੇਨਤੀ ਨੂੰ ਢੁਕਵੀਂ ਕਨੈਕਸ਼ਨ ਅਤੇ ਪੜ੍ਹਨ ਨੀਤੀ ਦਿਓ।
- ਕਾਲਰ ਨੂੰ ਸਮੁੱਚਾ ਫੈਸਲਾ ਬਜਟ ਦਿਓ।
- ਫੈਸਲੇ ਤੋਂ ਬਾਅਦ ਬਚੇ workers ਦੇ ਨਤੀਜੇ ਕੌਣ ਖਾਲੀ ਕਰਦਾ ਜਾਂ ਬੰਦ ਕਰਦਾ ਹੈ, ਇਹ ਨਿਰਧਾਰਤ ਕਰੋ।
Future ਲਈ ਘੱਟ ਉਡੀਕ ਕਰਨਾ ਇਸਦੀ ਅਧਾਰ ਬੇਨਤੀ ਨੂੰ ਛੋਟਾ ਕਰਨ ਦੇ ਬਰਾਬਰ ਨਹੀਂ ਹੈ। ਇਸੇ ਤਰ੍ਹਾਂ, ਨਤੀਜਾ ਛੱਡ ਦੇਣ ਨਾਲ ਹਰ ਨੈੱਟਵਰਕ ਸਰੋਤ ਤੁਰੰਤ ਮੁਕਤ ਨਹੀਂ ਹੁੰਦਾ।
ਪਹਿਲਾ ਸਫਲ ਨਤੀਜਾ ਵੀ ਸਿਰਫ਼ ਪਹਿਲੀ ਸਫਲ ਜਾਂਚ ਹੈ। ਇਹ ਸ਼ਡਿਊਲਿੰਗ, ਕੈਸ਼ ਕੀਤੇ ਕਨੈਕਸ਼ਨਾਂ ਅਤੇ ਖਾਸ ਜਾਂਚ ਮੰਜ਼ਿਲ 'ਤੇ ਨਿਰਭਰ ਕਰ ਸਕਦਾ ਹੈ। ਇਹ ਸਾਬਤ ਨਹੀਂ ਕਰਦਾ ਕਿ endpoint ਸਰਵਵਿਆਪੀ ਤੌਰ 'ਤੇ ਸਭ ਤੋਂ ਤੇਜ਼ ਹੈ ਜਾਂ ਅਸਲ ਕੰਮ ਸਫਲ ਹੋਵੇਗਾ।
ਕਈ ਵਾਰ ਤਾਜ਼ਾ ਨਿਰੀਖਣਾਂ ਵਾਲਾ ਛੋਟਾ ਰੱਖਿਆ ਪੂਲ ਹਰ ਡਾਊਨਲੋਡ ਤੋਂ ਪਹਿਲਾਂ ਪੂਰੀ ਸੂਚੀ ਨਾਲ ਦੌੜਨ ਨਾਲੋਂ ਸੌਖਾ ਹੁੰਦਾ ਹੈ। ਰਿਕਾਰਡ ਅੱਪਡੇਟ ਕਰਨ ਲਈ ਅਸਲ ਕਾਰਵਾਈ ਦਾ ਨਤੀਜਾ ਵਰਤੋ, ਅਸਫਲਤਾਵਾਂ ਲਈ ਨਿਯੰਤਰਿਤ ਰਿਕਵਰੀ ਨੀਤੀ ਨਾਲ। ਪ੍ਰੀਫਲਾਈਟ ਨੂੰ ਆਦਤ ਨਾਲ ਹਰ ਕੰਮ ਦੁੱਗਣਾ ਕਰਨ ਦੀ ਬਜਾਏ ਆਪਣੀ ਲਾਗਤ ਕਮਾਉਣੀ ਚਾਹੀਦੀ ਹੈ।