@@ -356,23 +356,33 @@ def _respawn_workers(self, workers, spawn_target, target_loader, delay: float =
356356 logger .warning (f'Killing old worker-{ idx + 1 } after it refused to gracefully stop' )
357357 old_wrk .kill ()
358358 old_wrk .join ()
359+
360+ logger .info (f'Stopped old worker-{ idx + 1 } ' )
361+
359362 self ._metrics .incr_spawn (len (workers ))
360363
361364 def _stop_workers (self ):
362365 for wrk in self .wrks :
363366 wrk .terminate ()
364367
368+ now = time .monotonic ()
369+ timeout = self .workers_kill_timeout if self .workers_kill_timeout else None
365370 for wrk in self .wrks :
366- wrk .join (self .workers_kill_timeout )
371+ wrk .join (timeout )
372+
367373 if self .workers_kill_timeout :
368374 # the worker might still be reported after `join`, let's context switch
369375 if wrk .is_alive ():
370376 time .sleep (0.001 )
371377 if wrk .is_alive ():
372- logger .warning (f'Killing worker-{ wrk .idx } after it refused to gracefully stop' )
378+ logger .warning (f'Killing worker-{ wrk .idx + 1 } after it refused to gracefully stop' )
373379 wrk .kill ()
374380 wrk .join ()
375381
382+ timeout = max (timeout - (time .monotonic () - now ), 0.001 )
383+
384+ logger .info (f'Stopped worker-{ wrk .idx + 1 } ' )
385+
376386 self .wrks .clear ()
377387
378388 def _workers_lifetime_watcher (self , ttl ):
@@ -481,19 +491,24 @@ def startup(self, spawn_target, target_loader):
481491
482492 def shutdown (self , exit_code = 0 ):
483493 logger .info ('Shutting down granian' )
494+
484495 if self .metrics_enabled :
485496 self ._stop_metrics ()
486497 self ._stop_workers ()
487498 self ._stop_ipc ()
488499 self ._call_hooks (self .hooks_shutdown )
489500 self ._unlink_pidfile ()
501+
502+ logger .info ('Granian shutdown completed, see ya!' )
503+
490504 if not exit_code and self .interrupt_children :
491505 exit_code = 1
492506 if exit_code :
493507 sys .exit (exit_code )
494508
495509 def _reload (self , spawn_target , target_loader ):
496510 logger .info ('HUP signal received, gracefully respawning workers..' )
511+
497512 workers = list (range (self .workers ))
498513 self .reload_signal = False
499514 self .respawned_wrks .clear ()
0 commit comments