Подтвердить что ты не робот

ScrapyRT против Scrapyd

Мы используем Scrapyd сервис некоторое время до сих пор. Он обеспечивает хорошую обертку вокруг проекта scrapy и его пауков, позволяющих управлять пауками через HTTP API:

Scrapyd - это сервис для запуска пауков Scrapy.

Он позволяет развернуть ваши проекты Scrapy и контролировать их пауков используя API HTTP JSON.

Но в последнее время я заметил еще один "свежий" пакет - ScrapyRT, который, согласно описанию проекта, звучит очень многообещающе и похоже на Scrapyd:

HTTP-сервер, который предоставляет API для планирования пауков Scrapy и запросов с пауками.

Является ли этот пакет альтернативой Scrapyd? Если да, в чем разница между этими двумя?

4b9b3361

Ответ 1

У них не так много общего. Как вы уже видели, вам нужно развернуть своих пауков на scrapyd, а затем запланировать обходы. scrapyd - автономная служба, работающая на сервере, где вы можете развернуть и запустить каждый проект/паук, который вам нравится.

С помощью ScrapyRT вы выбираете один из своих проектов, а cd - в этот каталог. Затем вы запускаете, например. scrapyrt, и вы начинаете сканирование для пауков в этом проекте через простой (и очень похожий на scrapyd) REST API. Затем вы получаете обходные элементы назад как часть ответа JSON.

Это очень хорошая идея, и она выглядит быстро, худощаво и четко определена. Скрапид, с другой стороны, более зрелый и более общий.

Вот некоторые ключевые отличия:

  • Scrapyd поддерживает несколько версий пауков и нескольких проектов. Насколько я могу видеть, если вы хотите запустить два разных проекта (или версии) с помощью ScrapyRT, вам придется использовать разные порты для каждого.
  • Scrapyd предоставляет инфраструктуру для хранения элементов на сервере, а ScrapyRT отправляет их обратно на ответ, который для меня означает, что они должны быть в порядке нескольких МБ (вместо потенциально ГБ). Аналогично, способ logging обрабатывается в scrapyd более общий по сравнению с ScrapyRT.
  • Scrapyd (потенциально постоянно) выполняет задания очередей и дает вам контроль над количеством процессов Scrapy, которые работают параллельно. ScrapyRT делает что-то простое, что, насколько я могу судить, - это начать обход для каждого запроса, как только поступит запрос. Блокирующий код в одном из пауков также блокирует других.
  • ScrapyRT требует аргумент url, который, насколько я могу судить, переопределяет любую логику start_urls.

Я бы сказал, что ScrapyRT и Scrapyd очень умно не перекрываются на данный момент времени. Конечно, вы никогда не знаете, какое будущее имеет.