mirror of
https://github.com/frappe/gunicorn.git
synced 2026-01-14 11:09:11 +08:00
add before_exec hook.
This commit is contained in:
parent
6bc97b926f
commit
d48bc785e6
@ -283,6 +283,7 @@ class Arbiter(object):
|
|||||||
|
|
||||||
os.environ['GUNICORN_FD'] = str(self.LISTENER.fileno())
|
os.environ['GUNICORN_FD'] = str(self.LISTENER.fileno())
|
||||||
os.chdir(self.START_CTX['cwd'])
|
os.chdir(self.START_CTX['cwd'])
|
||||||
|
self.conf.before_exec(self)
|
||||||
os.execlp(self.START_CTX[0], *self.START_CTX['argv'])
|
os.execlp(self.START_CTX[0], *self.START_CTX['argv'])
|
||||||
|
|
||||||
def murder_workers(self):
|
def murder_workers(self):
|
||||||
|
|||||||
@ -22,11 +22,13 @@ class Config(object):
|
|||||||
user=None,
|
user=None,
|
||||||
group=None,
|
group=None,
|
||||||
|
|
||||||
after_fork= lambda server, worker: server.log.info(
|
after_fork=lambda server, worker: server.log.info(
|
||||||
"worker=%s spawned pid=%s" % (worker.id, str(worker.pid))),
|
"worker=%s spawned pid=%s" % (worker.id, str(worker.pid))),
|
||||||
|
|
||||||
before_fork= lambda server, worker: server.log.info(
|
before_fork=lambda server, worker: server.log.info(
|
||||||
"worker=%s spawning" % worker.id)
|
"worker=%s spawning" % worker.id),
|
||||||
|
|
||||||
|
before_exec=lambda server: server.log.info("forked child, reexecuting")
|
||||||
)
|
)
|
||||||
|
|
||||||
def __init__(self, cmdopts, path=None):
|
def __init__(self, cmdopts, path=None):
|
||||||
@ -59,7 +61,6 @@ class Config(object):
|
|||||||
self.conf = self.DEFAULTS.copy()
|
self.conf = self.DEFAULTS.copy()
|
||||||
self.conf.update(self._load_file())
|
self.conf.update(self._load_file())
|
||||||
for key, value in list(self.cmdopts.items()):
|
for key, value in list(self.cmdopts.items()):
|
||||||
|
|
||||||
if value and value is not None:
|
if value and value is not None:
|
||||||
print "%s = %s" % (key, value)
|
print "%s = %s" % (key, value)
|
||||||
self.conf[key] = value
|
self.conf[key] = value
|
||||||
@ -103,17 +104,25 @@ class Config(object):
|
|||||||
return util.parse_address(self.conf['bind'])
|
return util.parse_address(self.conf['bind'])
|
||||||
|
|
||||||
def after_fork(self, *args):
|
def after_fork(self, *args):
|
||||||
if not callable(self.conf['after_fork']):
|
after_fork = self.conf.get("after_fork")
|
||||||
|
if not after_fork: return
|
||||||
|
if not callable(after_fork):
|
||||||
raise RuntimeError("after_fork hook isn't a callable")
|
raise RuntimeError("after_fork hook isn't a callable")
|
||||||
return self.conf['after_fork'](*args)
|
return after_fork(*args)
|
||||||
|
|
||||||
def before_fork(self, *args):
|
def before_fork(self, *args):
|
||||||
if not callable(self.conf['before_fork']):
|
before_fork = self.conf.get("before_fork")
|
||||||
|
if not before_fork: return
|
||||||
|
if not callable(before_fork):
|
||||||
raise RuntimeError("before_fork hook isn't a callable")
|
raise RuntimeError("before_fork hook isn't a callable")
|
||||||
return self.conf['before_fork'](*args)
|
return before_fork(*args)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def before_exec(self, *args):
|
||||||
|
before_exec = self.conf.get("before_exec")
|
||||||
|
if not before_exec: return
|
||||||
|
if not callable(before_exec):
|
||||||
|
raise RuntimeError("before_exec hook isn't a callable")
|
||||||
|
return before_exec(*args)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user