Scrapy AutoThrottle דרך פרוקסי: חריצים וזמן השהיה
השאירו את חריצי ההורדה של אתר היעד נפרדים מנתיבי הפרוקסי, ופרשו זמן השהיה כנתיב הבקשה שנצפה.
כברירת מחדל, Scrapy מקצה חריצי הורדה לפי הדומיין של כתובת ה-URL של הבקשה. מתן פרוקסי HTTP לבקשה אינו הופך את הכתובת לשם המארח של הפרוקסי. לכן בקשות לאתרים שונים יכולות לשמור על חריצים שונים בעודן חולקות מתווך אחד.
AutoThrottle מתאים את ההשהיה של כל חריץ לפי זמן ההורדה שנצפה. מגבלת המקביליות הרגילה לכל דומיין והשהיית ההורדה המינימלית עדיין חלות.
בדקו את הקיבוץ לפני שינוי האלגוריתם
Middleware מותאם יכול להקצות request.meta["download_slot"], ובכך לעקוף את בחירת החריץ הרגילה. חלק מהרחבות הפרוקסי משתמשות בקיבוץ משלהן. בדקו את ההגדרות האלה אם נראה שאתרים לא קשורים חולקים מגביל אחד.
לעומת זאת, הקצאת חריץ שונה לכל פרוקסי עלולה לאפשר לכמה פרוקסים לפנות לאותו יעד בו-זמנית. הדבר עלול לקעקע מגבלה ברמת האתר שהזחלן היה אמור לכבד. בחרו את מפתח החריץ לפי המשאב המוגן.
ההשהיה כוללת את הנתיב שבו השתמשתם
Scrapy מודד זמן השהיה מרגע שליחת הבקשה ועד קבלת כותרות HTTP. בקשה המועברת דרך פרוקסי עשויה לכלול בתצפית זו את השהיית התור וההעברה של המתווך. AutoThrottle אינו מקבל זמן עיבוד נפרד של המקור בלבד.
הגברת המקביליות אינה יכולה לגרום למדידה הזו לבודד את האתר. שמרו על נימוס ליעד ועל קיבולת הפרוקסי כמגבלות נפרדות כששניהם חשובים. פרוקסי משותף עשוי להזדקק לתקציב מקביליות נוסף בין חריצי היעדים, בעוד כל יעד שומר על מדיניות הקצב שלו.