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.