Этот вопрос был задан 8 месяцев назад, но мне было интересно то же самое, и я нашел другое (не очень) решение.Надеюсь, это поможет будущим читателям.
Я подключаюсь к базе данных в моем файле конвейера, если соединение с базой данных не удалось, я хотел, чтобы Spider прекратил сканирование (нет смысла собирать данные, если их некуда отправить).В конечном итоге я использовал:
from scrapy.project import crawler
crawler._signal_shutdown(9,0) #Run this if the cnxn fails.
Это заставляет Паука сделать следующее:
[scrapy] INFO: Received SIGKILL, shutting down gracefully. Send again to force unclean shutdown.
Я просто собрал это воедино после прочтения вашего комментария и просмотраФайл "/usr/local/lib/python2.7/dist-packages/Scrapy-0.12.0.2543-py2.7.egg/scrapy/crawler.py".Я не совсем уверен, что он делает, первое число, доставленное в функцию - это имя (например, использование 3,0 вместо 9,0 возвращает ошибку [scrapy] INFO: Received SIGKILL...
Кажется, что работает достаточно хорошо, хотяСчастливого удаления.
РЕДАКТИРОВАТЬ: Я также полагаю, что вы могли бы просто заставить свою программу завершить что-то вроде:
import sys
sys.exit("SHUT DOWN EVERYTHING!")