|  | @@ -84,7 +84,8 @@ class Pool(bootsteps.StartStopComponent):
 | 
	
		
			
				|  |  |      name = 'worker.pool'
 | 
	
		
			
				|  |  |      requires = ('queues', 'beat', )
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    def __init__(self, w, autoscale=None, no_execv=False, **kwargs):
 | 
	
		
			
				|  |  | +    def __init__(self, w, autoscale=None, autoreload=False,
 | 
	
		
			
				|  |  | +            no_execv=False, **kwargs):
 | 
	
		
			
				|  |  |          w.autoscale = autoscale
 | 
	
		
			
				|  |  |          w.pool = None
 | 
	
		
			
				|  |  |          w.max_concurrency = None
 | 
	
	
		
			
				|  | @@ -92,6 +93,7 @@ class Pool(bootsteps.StartStopComponent):
 | 
	
		
			
				|  |  |          w.no_execv = no_execv
 | 
	
		
			
				|  |  |          if w.autoscale:
 | 
	
		
			
				|  |  |              w.max_concurrency, w.min_concurrency = w.autoscale
 | 
	
		
			
				|  |  | +        self.autoreload_enabled = autoreload
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def on_poll_init(self, pool, hub):
 | 
	
		
			
				|  |  |          apply_after = hub.timer.apply_after
 | 
	
	
		
			
				|  | @@ -148,6 +150,7 @@ class Pool(bootsteps.StartStopComponent):
 | 
	
		
			
				|  |  |          if not threaded:
 | 
	
		
			
				|  |  |              semaphore = w.semaphore = BoundedSemaphore(procs)
 | 
	
		
			
				|  |  |              max_restarts = 100
 | 
	
		
			
				|  |  | +        allow_restart = self.autoreload_enabled or w.pool_restarts
 | 
	
		
			
				|  |  |          pool = w.pool = self.instantiate(w.pool_cls, w.min_concurrency,
 | 
	
		
			
				|  |  |                              initargs=(w.app, w.hostname),
 | 
	
		
			
				|  |  |                              maxtasksperchild=w.max_tasks_per_child,
 | 
	
	
		
			
				|  | @@ -157,6 +160,7 @@ class Pool(bootsteps.StartStopComponent):
 | 
	
		
			
				|  |  |                              lost_worker_timeout=w.worker_lost_wait,
 | 
	
		
			
				|  |  |                              threads=threaded,
 | 
	
		
			
				|  |  |                              max_restarts=max_restarts,
 | 
	
		
			
				|  |  | +                            allow_restart=allow_restart,
 | 
	
		
			
				|  |  |                              semaphore=semaphore)
 | 
	
		
			
				|  |  |          if w.hub:
 | 
	
		
			
				|  |  |              w.hub.on_init.append(partial(self.on_poll_init, pool))
 | 
	
	
		
			
				|  | @@ -287,6 +291,7 @@ class WorkController(configurated):
 | 
	
		
			
				|  |  |      task_soft_time_limit = from_config()
 | 
	
		
			
				|  |  |      max_tasks_per_child = from_config()
 | 
	
		
			
				|  |  |      pool_putlocks = from_config()
 | 
	
		
			
				|  |  | +    pool_restarts = from_config()
 | 
	
		
			
				|  |  |      force_execv = from_config()
 | 
	
		
			
				|  |  |      prefetch_multiplier = from_config()
 | 
	
		
			
				|  |  |      state_db = from_config()
 |