Skip to content

Commit 38528bc

Browse files
alexcepoidangra
authored andcommitted
don't start reactor if no crawler is scheduled
1 parent b0845fa commit 38528bc

File tree

1 file changed

+15
-16
lines changed

1 file changed

+15
-16
lines changed

scrapy/crawler.py

+15-16
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,8 @@ def __init__(self, *a, **kw):
9090
install_shutdown_handlers(self._signal_shutdown)
9191

9292
def start(self):
93-
self.start_crawling()
94-
self.start_reactor()
93+
if self.start_crawling():
94+
self.start_reactor()
9595

9696
def start_reactor(self):
9797
if self.settings.getbool('DNSCACHE_ENABLED'):
@@ -144,29 +144,28 @@ def create_crawler(self, name=None):
144144
return self.crawlers[name]
145145

146146
def start_crawler(self):
147-
name, crawler = self.crawlers.popitem()
147+
if self.crawlers and not self.stopping:
148+
name, crawler = self.crawlers.popitem()
148149

149-
sflo = log.start_from_crawler(crawler)
150-
crawler.configure()
151-
crawler.install()
152-
crawler.signals.connect(crawler.uninstall, signals.engine_stopped)
153-
if sflo:
154-
crawler.signals.connect(sflo.stop, signals.engine_stopped)
150+
sflo = log.start_from_crawler(crawler)
151+
crawler.configure()
152+
crawler.install()
153+
crawler.signals.connect(crawler.uninstall, signals.engine_stopped)
154+
if sflo:
155+
crawler.signals.connect(sflo.stop, signals.engine_stopped)
155156

156-
crawler.signals.connect(self.check_done, signals.engine_stopped)
157-
crawler.start()
157+
crawler.signals.connect(self.check_done, signals.engine_stopped)
158+
crawler.start()
158159

159-
return name, crawler
160+
return name, crawler
160161

161162
def check_done(self, **kwargs):
162-
if self.crawlers and not self.stopping:
163-
self.start_crawler()
164-
else:
163+
if not self.start_crawler():
165164
self.stop_reactor()
166165

167166
def start_crawling(self):
168167
log.scrapy_info(self.settings)
169-
self.start_crawler()
168+
return self.start_crawler() is not None
170169

171170
@defer.inlineCallbacks
172171
def stop(self):

0 commit comments

Comments
 (0)