@@ -216,7 +216,7 @@ def _signal_shutdown(self, signum, _):
216
216
signame = signal_names [signum ]
217
217
logger .info ("Received %(signame)s, shutting down gracefully. Send again to force " ,
218
218
{'signame' : signame })
219
- reactor .callFromThread (self .stop )
219
+ reactor .callFromThread (self ._graceful_stop_reactor )
220
220
221
221
def _signal_kill (self , signum , _ ):
222
222
install_shutdown_handlers (signal .SIG_IGN )
@@ -242,16 +242,30 @@ def start(self, stop_after_crawl=True):
242
242
# Don't start the reactor if the deferreds are already fired
243
243
if d .called :
244
244
return
245
- d .addBoth (lambda _ : self ._stop_reactor () )
245
+ d .addBoth (self ._stop_reactor )
246
246
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 ())
250
248
tp = reactor .getThreadPool ()
251
249
tp .adjustPoolsize (maxthreads = self .settings .getint ('REACTOR_THREADPOOL_MAXSIZE' ))
252
250
reactor .addSystemEventTrigger ('before' , 'shutdown' , self .stop )
253
251
reactor .run (installSignalHandlers = False ) # blocking call
254
252
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
+
255
269
def _stop_reactor (self , _ = None ):
256
270
try :
257
271
reactor .stop ()
0 commit comments