Scrapy трубопровод паук открыт и паук закрыт не вызывается
у меня возникли некоторые проблемы с трубопроводом scrapy. Моя информация очищается от сайтов форм 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, поскольку я хочу использовать их для открытия и закройте соединение с базой данных, но ничего не отображается в журнале для них.
если кто-нибудь предложил, что было бы очень полезно.
2 ответов
извините, нашел сразу после того, как я опубликовал это. Вы должны добавить:
dispatcher.connect(self.spider_opened, signals.spider_opened)
dispatcher.connect(self.spider_closed, signals.spider_closed)
на __init__
в противном случае он никогда не получит сигнал, чтобы назвать его
именами метода open_spider
и close_spider
, а не spider_opened
и spider_closed
. Это задокументировано здесь: http://doc.scrapy.org/en/latest/topics/item-pipeline.html#writing-your-own-item-pipeline.