Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python scrapy:spider析构函数(_del__)从未执行过_Python_Scrapy_Destructor_Scrapy Spider - Fatal编程技术网

Python scrapy:spider析构函数(_del__)从未执行过

Python scrapy:spider析构函数(_del__)从未执行过,python,scrapy,destructor,scrapy-spider,Python,Scrapy,Destructor,Scrapy Spider,我已经创建了一个运行良好的scrapy spider(它完成了应该做的事情),但是当完成工作时,它不会执行析构函数代码(del) 版本包括: -python 2.7.3 -刮毛0.24.6 -软呢帽18 class MySpider(scrapy.Spider): stuff def __del__(self): stuff_1 MySpider完成后,我如何执行“stuff-1”代码?使用信号。特别是,信号: @alecxe的答案是现在 请使用以下选项: from scrapy im

我已经创建了一个运行良好的scrapy spider(它完成了应该做的事情),但是当完成工作时,它不会执行析构函数代码(del

版本包括: -python 2.7.3 -刮毛0.24.6 -软呢帽18

class MySpider(scrapy.Spider):
stuff
def __del__(self):
    stuff_1

MySpider完成后,我如何执行“stuff-1”代码?

使用信号。特别是,信号:

@alecxe的答案是现在

请使用以下选项:

from scrapy import signals
from scrapy.xlib.pydispatch import dispatcher

class MySpider(scrapy.Spider):
    def __init__(self):
        dispatcher.connect(self.spider_closed, signals.spider_closed)

    def spider_closed(self, spider):
        stuff_1()

class MySpider(scrapy.Spider):
    ...
    @classmethod
    def from_crawler(cls, crawler, *args, **kwargs):
        spider = super(MySpider, cls).from_crawler(crawler, *args, **kwargs)
        crawler.signals.connect(spider.spider_closed, signal=scrapy.signals.spider_closed)
        return spider

    def spider_closed(self, spider):
        spider.logger.info('Spider closed')