Извините, что беспокою вас, ребята. Это плохой вопрос, кажется, меня действительно смутило то, как ItemPipeline работает в scrapy. Я закрою его и начну новый вопрос.
Где я должен привязать соединение db/redis к scrapy, Spider
или Pipeline
.
В документе скрапинга соединение mongo db привязан Pipeline
. Но это также может быть связано с Spider
(это также то, что делает расширение scrapy-redis
). Преимущество последнего решения заключается в том, что паук доступен в большем количестве мест, помимо конвейера, например, в промежуточном программном обеспечении.
Итак, как лучше это сделать?
Меня смущает, что конвейеры работают параллельно (это то, что говорится в документе). Означает ли это, что существует несколько экземпляров MyCustomPipeline
?
Кроме того, предпочтителен пул соединений redis/db?
Мне просто не хватает полевого опыта, чтобы принять решение. Нужна ваша помощь. Заранее спасибо.
Как говорится в документе, ItemPipeline запускается параллельно. Как? Существуют ли повторяющиеся экземпляры ItemPipeline, работающие в потоках. (Я заметил, что FilesPipeline использует отложенный поток для сохранения файлов в s3). Или есть только один экземпляр каждого конвейера, и он выполняется в основном цикле событий. Если это более поздний случай, пул соединений, похоже, не помогает. Потому что, когда вы используете соединение Redis, оно блокируется. Одновременно можно было использовать только одно соединение.