def start_maintenance_tasks(self): maintenance_worker = Scheduler(self.config) maintenance_greenlet = gevent.spawn(maintenance_worker.start) config_last_modified = os.stat(self.config_file).st_mtime while self.started: poll_last_modified = os.stat(self.config_file).st_mtime if poll_last_modified > config_last_modified: logger.debug( 'Config file changed, restarting maintenance workers.') config_last_modified = poll_last_modified config = self.get_config(self.config_file) # kill and stop old greenlet maintenance_worker.stop() maintenance_greenlet.kill(timeout=2) # spawn new worker greenlet and pass the new config maintenance_worker = Scheduler(config) maintenance_greenlet = gevent.spawn(maintenance_worker.start) # check config file for changes every 5 second gevent.sleep(5)