Изменить количество запущенных пауков scrapyd

Привет, у меня в проекте около 50 пауков, и в настоящее время я запускаю их через сервер scrapyd. Я столкнулся с проблемой, когда некоторые ресурсы, которые я использую, блокируются, из-за чего мои пауки не работают или работают очень медленно. Я надеялся, что это какой-то способ сказать scrapyd, чтобы у него был только 1 работающий паук за раз, а остальные оставлялись в очереди ожидания. Я не видел параметр конфигурации для этого в документах. Любая помощь приветствуется!


person rocktheartsm4l    schedule 25.07.2014    source источник
comment
Какие общие ресурсы у вас есть?   -  person alecxe    schedule 25.07.2014
comment
У меня есть файл sqlite, в который я пишу. Время от времени я получаю сообщение о невозможности подключения. Также я использую phantomjs и селен для обработки динамического (javascript) контента. Иногда кажется, что GhostDriver phantomjs блокируется из-за состояния гонки.   -  person rocktheartsm4l    schedule 25.07.2014


Ответы (1)


Это можно контролировать с помощью настроек scrapyd. Задайте для max_proc значение 1:

max_proc

Максимальное количество одновременных процессов Scrapy, которые будут запущены.

person alecxe    schedule 25.07.2014
comment
Предотвращает ли max proc асинхронное выполнение запросов? Вот почему я не использовал его. Мне было непонятно, так ли это. Это может быть непонимание с моей стороны, дополнительный вопрос: действительно ли scrapy порождает новые процессы или потоки для асинхронной обработки запросов, или это происходит из-за какой-то магии искривленной структуры? - person rocktheartsm4l; 25.07.2014
comment
Запросы @rocktheartsm4l в любом случае будут асинхронными, поскольку под капотом есть искривление. max_proc просто помогает запускать одного паука одновременно. Вот как я это понимаю. Какие ресурсы распределяются между пауками и замедляют работу? Я думаю, вам нужно исправить это, а не пытаться заставить его работать в режиме блокировки. - person alecxe; 25.07.2014
comment
Ответил на это выше. Спасибо за быстрые ответы. - person rocktheartsm4l; 25.07.2014
comment
@rocktheartsm4l хорошо, да, во-первых, sqlite здесь не очень хороший выбор, поскольку он блокирует всю базу данных при записи. Переключитесь на postgresql или mysql и т. д., если вам нужна классическая реляционная база данных, или на mongodb или redis и т. д., если вам нужно решение NoSQL. Спасибо. - person alecxe; 25.07.2014
comment
Спасибо за понимание sqlite. Прямо сейчас мой проект является прототипом, и я просто использую файл sqlite в качестве фиктивной базы данных, пока не подключим свой проект к реальной базе данных на следующей неделе. До тех пор я буду использовать только max_proc = 1. Я задам новый вопрос о проблеме фантомов. - person rocktheartsm4l; 25.07.2014
comment
Не знаю, есть ли это все еще в вашей базе знаний, но вот следующий вопрос: stackoverflow.com/questions/24962520/ - person rocktheartsm4l; 25.07.2014
comment
@rocktheartsm4l это не входит непосредственно в мою базу знаний, но вещи, которыми вы занимаетесь, очень сильно связаны с тем, что я делаю в одном из своих проектов. Я обращу на это внимание. - person alecxe; 25.07.2014
comment
@rocktheartsm4l, кстати, критично ли ведение журнала phantomjs? Отключить можно как вариант :) - person alecxe; 25.07.2014
comment
Совсем не критично! Если я не найду другого решения, я укажу phantomjs log_path на dev null. И спасибо! - person rocktheartsm4l; 25.07.2014