Scrapy প্রক্সি মিডলওয়্যার: Request বনাম None রিটার্ন মান
Scrapy প্রক্সি নির্ধারণের পর নিয়ন্ত্রণ ফিরিয়ে দিন, ডাউনলোডের আগে একই অনুরোধ অনিচ্ছাকৃতভাবে পুনরায় সময়সূচি না করে।
লগে প্রক্সি ঠিকানা বদলায়। গন্তব্যটি প্রক্সির অ্যাক্সেস লগে কখনও দেখা যায় না। দেখুন আপনার মিডলওয়্যার অনুরোধটিকে ডাউনলোডারে পৌঁছাতে দিচ্ছে কি না।
Scrapy-র ডাউনলোডার মিডলওয়্যারে Request ফেরানো মানে সেই অনুরোধটি পুনরায় সময়সূচিভুক্ত করা। এর মানে নয় “আমি এইমাত্র যে মেটাডেটা বদলেছি তা দিয়ে এই বস্তুটি পাঠাতে থাকুন”।
কেবল একটি পথ বেছে নেওয়া সিলেক্টরের জন্য গুরুত্বপূর্ণ রূপটি হলো:
def process_request(self, request):
request.meta['proxy'] = self.choose_proxy()
return None
এই খণ্ডটি বর্তমান হুক রূপ দেখায়; ইনস্টল করা Scrapy সংস্করণ যে মিডলওয়্যার ইন্টারফেস সমর্থন করে তা ব্যবহার করুন। সিলেক্টরকে অবশ্যই বৈধ এন্ডপয়েন্ট ফেরাতে হবে এবং অনুপলব্ধ পুল স্পষ্টভাবে সামলাতে হবে। পাবলিক মধ্যস্থতাকারী অনুমোদনকারী পাবলিক ক্রল সেই রিটার্ন মানের জন্য HTTP প্রক্সি তালিকা থেকে HTTP প্রার্থী নিতে পারে।
None ফেরালে বাকি অনুরোধ মিডলওয়্যার ও ডাউনলোডার এগিয়ে যেতে পারে। অন্য একটি Request ফেরানো উপকারী যখন আপনি সচেতনভাবে কাজ প্রতিস্থাপন বা পুনরায় চেষ্টা করেন, তবে এর জন্য কারণ ও প্রস্থানের শর্ত দরকার।
প্রতিবার একই অনুরোধ ফেরানো রোটেটর কখনও গন্তব্য সংযোগ না করেই নিজের নির্বাচন কোড বারবার চালাতে পারে। টাইমআউট বাড়ানো বা আরও প্রক্সি পোর্ট খোলা সেই নিয়ন্ত্রণ-প্রবাহ লুপ ঠিক করতে পারে না।
মিডলওয়্যার প্রবেশ, রিটার্ন আচরণ এবং প্রথম প্রকৃত নেটওয়ার্ক প্রচেষ্টাকে আলাদা ঘটনা হিসেবে পরীক্ষা করুন। “নির্বাচিত প্রক্সি” বলা লগ লাইন কেবল প্রমাণ করে সিলেক্টর চলেছে। এটি প্রমাণ করে না যে নির্বাচিত এন্ডপয়েন্ট ব্যবহার করে অনুরোধ পাঠানো হয়েছে।