Scrapy pipe spider_opened и spider_closed не вызываются
У меня возникают проблемы с трубопроводной схемой. Моя информация очищается от форм ok, и метод process_item вызывается правильно. Однако методы spider_opened и spider_closed не вызываются.
class MyPipeline(object):
def __init__(self):
log.msg("Initializing Pipeline")
self.conn = None
self.cur = None
def spider_opened(self, spider):
log.msg("Pipeline.spider_opened called", level=log.DEBUG)
def spider_closed(self, spider):
log.msg("Pipeline.spider_closed called", level=log.DEBUG)
def process_item(self, item, spider):
log.msg("Processsing item " + item['title'], level=log.DEBUG)
Оба журнала __init__
и process_item
записываются в журнал, но сообщения журнала spider_open
и spider_close
не являются.
Мне нужно использовать методы spider_opened и spider_closed, поскольку я хочу использовать их для открытия и закрытия соединения с базой данных, но ничего не отображается в журнале для них.
Если кто-нибудь предложил, что это было бы очень полезно.
Ответы
Ответ 1
Извините, нашел это сразу после того, как я разместил это. Вы должны добавить:
dispatcher.connect(self.spider_opened, signals.spider_opened)
dispatcher.connect(self.spider_closed, signals.spider_closed)
в __init__
в противном случае он никогда не получит сигнал для его вызова
Ответ 2
Имена подходящих методов: open_spider
и close_spider
, а не spider_opened
и spider_closed
. Это описано здесь: http://doc.scrapy.org/en/latest/topics/item-pipeline.html#writing-your-own-item-pipeline.