def _worker_postfork(self, tmpfd): self.log.info("initializing worker") if self.worker_uid is not None: self.log.info("setting worker uid") os.setuid(self.worker_uid) if self.worker_gid is not None: self.log.info("setting worker gid") os.setgid(self.worker_gid) if self.readiness_notifier is not None: scheduler.end(self.readiness_notifier) scheduler.reset_poller() if self.original: scheduler.schedule(self.worker_inform_ready) self.clear_master_signals() self.apply_worker_signals() for t in self.workers.values(): t.cancel() self.workers = None self.log.info("starting health timer") self.worker_health_timer(tmpfd) self.zombie_checker.cancel() self.worker_postfork()
def background(): if os.fork(): sys.exit(0) os.setsid() sys.argv[0] = os.path.abspath(sys.argv[0]) os.chdir('/') os.umask(0) closerange(0, resource.getrlimit(resource.RLIMIT_NOFILE)[0]) if os.fork(): sys.exit(0) scheduler.reset_poller()
def _worker_postfork(self, wid, pid, tmpfd): self.log.info("initializing worker") with io.File(self.control_path(self.WORKER_PIDFILE % wid), 'w') as fp: fp.write(str(os.getpid())) if self.worker_gid is not None: self.log.info("setting worker gid") os.setgid(self.worker_gid) if self.worker_uid is not None: self.log.info("setting worker uid") os.setuid(self.worker_uid) if self.readiness_notifier is not None: scheduler.end(self.readiness_notifier) scheduler.reset_poller() if self.original: scheduler.schedule(self.worker_inform_ready) self.clear_master_signals() self.apply_worker_signals() for t in self.health_checks.values(): scheduler.end(t) self.workers = None self.rev_workers = None self.health_checks = None self.log.info("starting health timer") self.worker_health_timer(tmpfd) self.zombie_checker.cancel() self.worker_postfork(wid, pid)
def setUp(self): super(GreenSelectMixin, self).setUp() scheduler.reset_poller(self.POLLER())