def reexec(self): """\ Relaunch the master and workers. """ if self.pidfile is not None: self.pidfile.rename("%s.oldbin" % self.pidfile.fname) self.reexec_pid = os.fork() if self.reexec_pid != 0: self.master_name = "Old Master" return os.environ['GUNICORN_FD'] = str(self.LISTENER.fileno()) os.chdir(self.START_CTX['cwd']) self.cfg.pre_exec(self) util.closerange(3, self.LISTENER.fileno()) util.closerange(self.LISTENER.fileno()+1, util.get_maxfd()) os.execvpe(self.START_CTX[0], self.START_CTX['args'], os.environ)
def reexec(self): """\ Relaunch the master and workers. """ if self.pidfile is not None: self.pidfile.rename("%s.oldbin" % self.pidfile.fname) self.reexec_pid = os.fork() if self.reexec_pid != 0: self.master_name = "Old Master" return fds = [l.fileno() for l in self.LISTENERS] os.environ['GUNICORN_FD'] = ",".join([str(fd) for fd in fds]) os.chdir(self.START_CTX['cwd']) self.cfg.pre_exec(self) # close all file descriptors except bound sockets util.closerange(3, fds[0]) util.closerange(fds[-1] + 1, util.get_maxfd()) os.execvpe(self.START_CTX[0], self.START_CTX['args'], os.environ)