def init_process(self): """\ If you override this method in a subclass, the last statement in the function should be to call this method with super(MyWorkerClass, self).init_process() so that the ``run()`` loop is initiated. """ # start the reloader if self.cfg.reload: def changed(fname): self.log.info("Worker reloading: %s modified", fname) self.alive = False self.cfg.worker_int(self) time.sleep(0.1) sys.exit(0) self.reloader = Reloader(callback=changed) self.reloader.start() # set environment' variables if self.cfg.env: for k, v in self.cfg.env.items(): os.environ[k] = v util.set_owner_process(self.cfg.uid, self.cfg.gid, initgroups=self.cfg.initgroups) # Reseed the random number generator util.seed() # For waking ourselves up self.PIPE = os.pipe() for p in self.PIPE: util.set_non_blocking(p) util.close_on_exec(p) # Prevent fd inheritance [util.close_on_exec(s) for s in self.sockets] util.close_on_exec(self.tmp.fileno()) self.wait_fds = self.sockets + [self.PIPE[0]] self.log.close_on_exec() self.init_signals() self.load_wsgi() self.cfg.post_worker_init(self) # Enter main run loop self.booted = True self.run()
def _start_reloader(self): if not self.config.reloader_enable: return extra_files = self.config.reloader_extra_files if not extra_files: extra_files = set() else: extra_files = set(extra_files) if self.app.config_path: extra_files.add(self.app.config_path) reloader = Reloader(callback=self._reload, extra_files=extra_files) reloader.start() print("* Reloader started")