From 0643010f0cb27d7b904c4f790dfff5d588f9e003 Mon Sep 17 00:00:00 2001 From: Pablo Hoffman Date: Thu, 3 Sep 2009 09:47:59 -0300 Subject: [PATCH] engine: stopping reactor when there's nothing left to do --- scrapy/core/engine.py | 7 ++++--- scrapy/tests/test_engine.py | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/scrapy/core/engine.py b/scrapy/core/engine.py index f1aa7ec91..74fe8abd7 100644 --- a/scrapy/core/engine.py +++ b/scrapy/core/engine.py @@ -65,6 +65,8 @@ class ExecutionEngine(object): self.close_domain, domain, reason='shutdown') if self._mainloop_task.running: self._mainloop_task.stop() + if reactor.running: + reactor.stop() def kill(self): """Forces shutdown without waiting for pending transfers to finish. @@ -299,9 +301,8 @@ class ExecutionEngine(object): stats.close_domain(domain, reason=reason) log.msg("Domain closed (%s)" % reason, domain=domain) spiders.close_domain(domain) - if self.running: - self._mainloop() - elif not self.open_domains: + self._mainloop() + if not self.open_domains: send_catch_log(signal=signals.engine_stopped, sender=self.__class__) scrapyengine = ExecutionEngine() diff --git a/scrapy/tests/test_engine.py b/scrapy/tests/test_engine.py index 2fe0e28dc..4f96413b5 100644 --- a/scrapy/tests/test_engine.py +++ b/scrapy/tests/test_engine.py @@ -68,6 +68,7 @@ class CrawlingSession(object): dispatcher.connect(self.request_received, signals.request_received) dispatcher.connect(self.response_downloaded, signals.response_downloaded) + scrapymanager.configure() scrapymanager.runonce(self.domain) self.port.stopListening() self.wasrun = True