Scrapy 扩展:spider_closed 未被调用
Scrapy extension: spider_closed is not called
我有一个附加到 spider_opened 和 spider_closed 的扩展。 spider_opened方法调用正确,spider_closed方法调用错误。我通过调用 scrapyd 取消端点关闭蜘蛛。
class SpiderCtlExtension(object):
@classmethod
def from_crawler(cls, crawler):
ext = SpiderCtlExtension()
ext.project_name = crawler.settings.get('BOT_NAME')
crawler.signals.connect(ext.spider_opened, signal=signals.spider_opened)
crawler.signals.connect(ext.spider_closed, signal=signals.spider_closed)
return ext
def spider_opened(self, spider):
sql = """UPDATE ctl_crawler
SET status = 'RUNNING'
WHERE jobid = '{}' """.format(os.getenv("SCRAPY_JOB"))
engine.execute(sql)
def spider_closed(self,spider,reason):
sql = """UPDATE ctl_crawler
SET status = '{}'
WHERE jobid = '{}' """.format(reason.upper(),os.getenv("SCRAPY_JOB"))
engine.execute(sql)
我是不是做错了什么?
这是一个(windows 特定的)错误,请参阅我的错误报告 https://github.com/scrapy/scrapyd/issues/83
原因是取消方法的工作方式,没有调用蜘蛛进程中的关闭处理程序。
我有一个附加到 spider_opened 和 spider_closed 的扩展。 spider_opened方法调用正确,spider_closed方法调用错误。我通过调用 scrapyd 取消端点关闭蜘蛛。
class SpiderCtlExtension(object):
@classmethod
def from_crawler(cls, crawler):
ext = SpiderCtlExtension()
ext.project_name = crawler.settings.get('BOT_NAME')
crawler.signals.connect(ext.spider_opened, signal=signals.spider_opened)
crawler.signals.connect(ext.spider_closed, signal=signals.spider_closed)
return ext
def spider_opened(self, spider):
sql = """UPDATE ctl_crawler
SET status = 'RUNNING'
WHERE jobid = '{}' """.format(os.getenv("SCRAPY_JOB"))
engine.execute(sql)
def spider_closed(self,spider,reason):
sql = """UPDATE ctl_crawler
SET status = '{}'
WHERE jobid = '{}' """.format(reason.upper(),os.getenv("SCRAPY_JOB"))
engine.execute(sql)
我是不是做错了什么?
这是一个(windows 特定的)错误,请参阅我的错误报告 https://github.com/scrapy/scrapyd/issues/83
原因是取消方法的工作方式,没有调用蜘蛛进程中的关闭处理程序。