diff --git a/scrapy/crawler.py b/scrapy/crawler.py index 2d0cd2ebc..79913e1a6 100644 --- a/scrapy/crawler.py +++ b/scrapy/crawler.py @@ -216,7 +216,7 @@ class CrawlerProcess(CrawlerRunner): signame = signal_names[signum] logger.info("Received %(signame)s, shutting down gracefully. Send again to force ", {'signame': signame}) - reactor.callFromThread(self.stop) + reactor.callFromThread(self._graceful_stop_reactor) def _signal_kill(self, signum, _): install_shutdown_handlers(signal.SIG_IGN) @@ -261,6 +261,11 @@ class CrawlerProcess(CrawlerRunner): timeout=self.settings.getfloat('DNS_TIMEOUT') ) + def _graceful_stop_reactor(self): + d = self.stop() + d.addBoth(self._stop_reactor) + return d + def _stop_reactor(self, _=None): try: reactor.stop()