Skip to content

Instantly share code, notes, and snippets.

@streeter
Created February 20, 2013 02:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save streeter/4992219 to your computer and use it in GitHub Desktop.
Save streeter/4992219 to your computer and use it in GitHub Desktop.
Properly reexec gunicorn's Arbiter
def reexec(self):
"""\
Relaunch the master and workers.
"""
self.kill_workers(signal.SIGQUIT)
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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment