Skip to content

Commit 90aa5c0

Browse files
committed
Merge pull request scrapy#1284 from scrapy/crawler-cleanup
CrawlerProcess cleanup
2 parents f91461c + 64399d1 commit 90aa5c0

File tree

1 file changed

+19
-5
lines changed

1 file changed

+19
-5
lines changed

scrapy/crawler.py

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ def _signal_shutdown(self, signum, _):
216216
signame = signal_names[signum]
217217
logger.info("Received %(signame)s, shutting down gracefully. Send again to force ",
218218
{'signame': signame})
219-
reactor.callFromThread(self.stop)
219+
reactor.callFromThread(self._graceful_stop_reactor)
220220

221221
def _signal_kill(self, signum, _):
222222
install_shutdown_handlers(signal.SIG_IGN)
@@ -242,16 +242,30 @@ def start(self, stop_after_crawl=True):
242242
# Don't start the reactor if the deferreds are already fired
243243
if d.called:
244244
return
245-
d.addBoth(lambda _: self._stop_reactor())
245+
d.addBoth(self._stop_reactor)
246246

247-
cache_size = self.settings.getint('DNSCACHE_SIZE') if self.settings.getbool('DNSCACHE_ENABLED') else 0
248-
reactor.installResolver(CachingThreadedResolver(reactor, cache_size,
249-
self.settings.getfloat('DNS_TIMEOUT')))
247+
reactor.installResolver(self._get_dns_resolver())
250248
tp = reactor.getThreadPool()
251249
tp.adjustPoolsize(maxthreads=self.settings.getint('REACTOR_THREADPOOL_MAXSIZE'))
252250
reactor.addSystemEventTrigger('before', 'shutdown', self.stop)
253251
reactor.run(installSignalHandlers=False) # blocking call
254252

253+
def _get_dns_resolver(self):
254+
if self.settings.getbool('DNSCACHE_ENABLED'):
255+
cache_size = self.settings.getint('DNSCACHE_SIZE')
256+
else:
257+
cache_size = 0
258+
return CachingThreadedResolver(
259+
reactor=reactor,
260+
cache_size=cache_size,
261+
timeout=self.settings.getfloat('DNS_TIMEOUT')
262+
)
263+
264+
def _graceful_stop_reactor(self):
265+
d = self.stop()
266+
d.addBoth(self._stop_reactor)
267+
return d
268+
255269
def _stop_reactor(self, _=None):
256270
try:
257271
reactor.stop()

0 commit comments

Comments
 (0)