میانافزار پروکسی Scrapy: مقادیر بازگشتی Request و None
پس از تخصیص پروکسی Scrapy کنترل را بازگردانید، بهجای اینکه ناخواسته همان درخواست را پیش از دانلود دوباره زمانبندی کنید.
نشانی پروکسی در گزارش تغییر میکند. مقصد هرگز در گزارش دسترسی پروکسی ظاهر نمیشود. بررسی کنید که آیا میانافزار شما اصلاً اجازه میدهد درخواست به دانلودگر برسد.
در میانافزار دانلودگر Scrapy، بازگرداندن Request یعنی زمانبندی دوبارهٔ آن درخواست. این معنا را ندارد که «این شیء را با فرادادهای که همین حالا تغییر دادم ادامه بده».
برای گزینشگری که فقط یک مسیر را انتخاب میکند، شکل مهم این است:
def process_request(self, request):
request.meta['proxy'] = self.choose_proxy()
return None
این قطعه شکل فعلی قلاب را نشان میدهد؛ از رابط میانافزاری که نسخهٔ نصبشدهٔ Scrapy پشتیبانی میکند استفاده کنید. گزینشگر باید یک نقطهٔ پایانی معتبر بازگرداند و یک مخزن در دسترسنبودنی را صریحاً مدیریت کند. خزش عمومی که واسطههای عمومی را مجاز میداند میتواند برای آن مقدار بازگشتی نامزدهای HTTP را از فهرست پروکسی HTTP بگیرد.
بازگرداندن None به بقیهٔ میانافزار درخواست و دانلودگر اجازه میدهد ادامه دهند. بازگرداندن Request دیگر زمانی مفید است که کار را عمداً جایگزین یا دوباره امتحان میکنید، اما به دلیل و شرط خروج نیاز دارد.
گردانندهای که هر بار همان درخواست را بازمیگرداند میتواند کد انتخاب خود را بارها اجرا کند بدون آنکه هرگز اتصالی به مقصد برقرار شود. افزایش مهلتها یا باز کردن درگاههای پروکسی بیشتر نمیتواند آن حلقهٔ جریان کنترل را ترمیم کند.
ورود به میانافزار، رفتار بازگشت و نخستین تلاش واقعی شبکه را رویدادهای جداگانه بررسی کنید. یک خط گزارش که میگوید «پروکسی انتخاب شد» فقط ثابت میکند گزینشگر اجرا شده است. ثابت نمیکند درخواستی با نقطهٔ پایانی انتخابشده ارسال شده است.