خط أنابيب scrapy spider_opened و spider_closed لم يتم استدعاؤه
سؤال
أواجه بعض المتاعب في خط أنابيب 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.