class SomeSpider(BaseSpider): name = 's_spider' allowed_domains = ['site.ru'] items = {} start_urls = [*] @classmethod def from_crawler(cls, crawler, *args, **kwargs): spider = super(SomeSpider, cls).from_crawler(crawler, *args, **kwargs) crawler.signals.connect(spider.spider_opened, signals.spider_opened) crawler.signals.connect(spider.spider_closed, signals.spider_closed) return spider def spider_opened(self, spider): print("spider opened") def spider_closed(self, spider, reason): print("spider CLOSED!!!!!!!!!!!") i = SomeItem() i['d'] = self.items yield i such code, directly from the documentation, is called spider_opened and spider_closed is not.
when called in Python 2, everything works fine, but with Python 3.6 it doesn’t