Scrapy AutoThrottle през прокси: слотове и латентност
Дръжте слотовете за изтегляне на целевия сайт отделно от маршрутите на проксито и тълкувайте латентността като наблюдавания път на заявката.
По подразбиране Scrapy задава слотове за изтегляне според домейна на URL адреса на заявката. Задаването на HTTP прокси за заявката не превръща този URL в името на хоста на проксито. Затова заявките към различни сайтове могат да запазят различни слотове, докато споделят един посредник.
AutoThrottle регулира закъснението на всеки слот чрез наблюдаваната латентност на изтегляне. Стандартният лимит на паралелност за домейн и минималното закъснение за изтегляне продължават да важат.
Проверете групирането, преди да променяте алгоритъма
Персонализиран middleware може да зададе request.meta["download_slot"], като отмени нормалния избор на слот. Някои разширения за прокси използват собствено групиране. Проверете тези настройки, ако несвързани сайтове изглежда споделят един ограничител.
Обратно, задаването на различен слот за всяко прокси може да позволи на няколко проксита да се свързват с една и съща цел едновременно. Това може да наруши ограничение за целия сайт, което обхождащият агент е трябвало да спазва. Изберете ключа на слота според ресурса, който се защитава.
Закъснението включва пътя, който сте използвали
Scrapy измерва латентността от изпращането на заявката до получаването на HTTP заглавките. Заявка, пренасяна през прокси, може да включи в това наблюдение закъснението за опашка и препращане на посредника. AutoThrottle не получава отделно време за обработка само от източника.
Увеличаването на паралелността не може да накара това измерване да изолира сайта. Дръжте учтивостта към целта и капацитета на проксито като отделни лимити, когато и двете имат значение. Споделено прокси може да се нуждае от допълнителен бюджет за паралелност по слотовете на целите, докато всяка цел запазва собствена политика за скоростта.