خط أنابيب scrapy spider_opened و spider_closed لم يتم استدعاؤه

StackOverflow https://stackoverflow.com/questions/4113275

  •  29-09-2019
  •  | 
  •  

سؤال

أواجه بعض المتاعب في خط أنابيب Scrapy. معلوماتي هي مواقع النماذج المكثفة على ما يرام ، ويتم استدعاء طريقة 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 حيث أرغب في استخدامها لفتح وإغلاق اتصال بقاعدة بيانات ، ولكن لا شيء يظهر في السجل لهم.

إذا كان لدى أي شخص أي اقتراح سيكون مفيدًا جدًا.

هل كانت مفيدة؟

المحلول

آسف ، وجدت ذلك بعد أن نشرت هذا. عليك أن تضيف:

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-pip.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top