Scrapy ਪ੍ਰੌਕਸੀ ਮਿਡਲਵੇਅਰ: Request ਅਤੇ None ਦੇ ਰਿਟਰਨ ਮੁੱਲ
Scrapy ਪ੍ਰੌਕਸੀ ਨਿਰਧਾਰਤ ਕਰਨ ਤੋਂ ਬਾਅਦ ਕੰਟਰੋਲ ਵਾਪਸ ਕਰੋ, ਡਾਊਨਲੋਡ ਤੋਂ ਪਹਿਲਾਂ ਉਹੀ ਬੇਨਤੀ ਬੇਧਿਆਨੇ ਦੁਬਾਰਾ ਸ਼ਡਿਊਲ ਕਰਨ ਦੀ ਬਜਾਏ।
ਲੌਗ ਵਿੱਚ ਪ੍ਰੌਕਸੀ ਪਤਾ ਬਦਲਦਾ ਹੈ। ਮੰਜ਼ਿਲ ਪ੍ਰੌਕਸੀ ਦੇ ਐਕਸੈਸ ਲੌਗ ਵਿੱਚ ਕਦੇ ਨਹੀਂ ਦਿਸਦੀ। ਜਾਂਚੋ ਕਿ ਕੀ ਤੁਹਾਡਾ ਮਿਡਲਵੇਅਰ ਬੇਨਤੀ ਨੂੰ ਡਾਊਨਲੋਡਰ ਤੱਕ ਪਹੁੰਚਣ ਦਿੰਦਾ ਹੈ।
Scrapy ਦੇ ਡਾਊਨਲੋਡਰ ਮਿਡਲਵੇਅਰ ਵਿੱਚ Request ਵਾਪਸ ਕਰਨ ਦਾ ਮਤਲਬ ਹੈ ਉਸ ਬੇਨਤੀ ਨੂੰ ਦੁਬਾਰਾ ਸ਼ਡਿਊਲ ਕਰਨਾ। ਇਸ ਦਾ ਮਤਲਬ ਇਹ ਨਹੀਂ ਕਿ “ਹੁਣੇ ਬਦਲੇ ਮੈਟਾਡੇਟਾ ਨਾਲ ਇਹ ਵਸਤੂ ਭੇਜਦੇ ਰਹੋ”।
ਸਿਰਫ਼ ਇੱਕ ਰਸਤਾ ਚੁਣਨ ਵਾਲੇ ਸਿਲੈਕਟਰ ਲਈ ਮਹੱਤਵਪੂਰਨ ਰੂਪ ਇਹ ਹੈ:
def process_request(self, request):
request.meta['proxy'] = self.choose_proxy()
return None
ਇਹ ਟੁਕੜਾ ਮੌਜੂਦਾ ਹੁੱਕ ਰੂਪ ਦਿਖਾਉਂਦਾ ਹੈ; ਸਥਾਪਿਤ Scrapy ਸੰਸਕਰਣ ਦੁਆਰਾ ਸਮਰਥਿਤ ਮਿਡਲਵੇਅਰ ਇੰਟਰਫ਼ੇਸ ਵਰਤੋ। ਸਿਲੈਕਟਰ ਨੂੰ ਇੱਕ ਵੈਧ ਅੰਤ ਬਿੰਦੂ ਵਾਪਸ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ ਅਤੇ ਉਪਲਬਧ ਨਾ ਹੋਣ ਵਾਲੇ ਪੂਲ ਨੂੰ ਸਪਸ਼ਟ ਤੌਰ ਤੇ ਸੰਭਾਲਣਾ ਚਾਹੀਦਾ ਹੈ। ਜਨਤਕ ਵਿਚੋਲਿਆਂ ਦੀ ਇਜਾਜ਼ਤ ਦੇਣ ਵਾਲਾ ਜਨਤਕ ਕ੍ਰਾਲ ਉਸ ਰਿਟਰਨ ਮੁੱਲ ਲਈ HTTP ਪ੍ਰੌਕਸੀ ਸੂਚੀ ਤੋਂ HTTP ਉਮੀਦਵਾਰ ਲੈ ਸਕਦਾ ਹੈ।
None ਵਾਪਸ ਕਰਨ ਨਾਲ ਬਾਕੀ ਬੇਨਤੀ ਮਿਡਲਵੇਅਰ ਅਤੇ ਡਾਊਨਲੋਡਰ ਅੱਗੇ ਵਧ ਸਕਦੇ ਹਨ। ਹੋਰ Request ਵਾਪਸ ਕਰਨਾ ਤਦ ਲਾਭਦਾਇਕ ਹੈ ਜਦੋਂ ਤੁਸੀਂ ਜਾਣਬੁੱਝ ਕੇ ਕੰਮ ਬਦਲਦੇ ਜਾਂ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹੋ, ਪਰ ਇਸ ਲਈ ਕਾਰਨ ਅਤੇ ਨਿਕਾਸ ਸ਼ਰਤ ਚਾਹੀਦੀ ਹੈ।
ਹਰ ਵਾਰ ਉਹੀ ਬੇਨਤੀ ਵਾਪਸ ਕਰਨ ਵਾਲਾ ਰੋਟੇਟਰ ਕਦੇ ਮੰਜ਼ਿਲ ਨਾਲ ਕਨੈਕਸ਼ਨ ਬਣਾਏ ਬਿਨਾਂ ਆਪਣਾ ਚੋਣ ਕੋਡ ਵਾਰ-ਵਾਰ ਚਲਾ ਸਕਦਾ ਹੈ। ਟਾਈਮਆਊਟ ਵਧਾਉਣਾ ਜਾਂ ਹੋਰ ਪ੍ਰੌਕਸੀ ਪੋਰਟ ਖੋਲ੍ਹਣਾ ਉਸ ਕੰਟਰੋਲ-ਪ੍ਰਵਾਹ ਲੂਪ ਨੂੰ ਠੀਕ ਨਹੀਂ ਕਰ ਸਕਦਾ।
ਮਿਡਲਵੇਅਰ ਦਾਖਲਾ, ਰਿਟਰਨ ਵਿਵਹਾਰ ਅਤੇ ਪਹਿਲੀ ਅਸਲ ਨੈੱਟਵਰਕ ਕੋਸ਼ਿਸ਼ ਨੂੰ ਵੱਖਰੀਆਂ ਘਟਨਾਵਾਂ ਵਜੋਂ ਜਾਂਚੋ। “ਪ੍ਰੌਕਸੀ ਚੁਣੀ ਗਈ” ਕਹਿਣ ਵਾਲੀ ਲੌਗ ਲਾਈਨ ਸਿਰਫ਼ ਇਹ ਸਾਬਤ ਕਰਦੀ ਹੈ ਕਿ ਸਿਲੈਕਟਰ ਚੱਲਿਆ। ਇਹ ਸਾਬਤ ਨਹੀਂ ਕਰਦੀ ਕਿ ਚੁਣੇ ਅੰਤ ਬਿੰਦੂ ਨਾਲ ਬੇਨਤੀ ਭੇਜੀ ਗਈ।