mirror of
https://github.com/frappe/gunicorn.git
synced 2026-01-14 11:09:11 +08:00
removed python string formatting from logging to enable log message grouping
This commit is contained in:
parent
980792c8af
commit
179b87639c
@ -189,7 +189,7 @@ proc_name = None
|
|||||||
#
|
#
|
||||||
|
|
||||||
def post_fork(server, worker):
|
def post_fork(server, worker):
|
||||||
server.log.info("Worker spawned (pid: %s)" % worker.pid)
|
server.log.info("Worker spawned (pid: %s)", worker.pid)
|
||||||
|
|
||||||
def pre_fork(server, worker):
|
def pre_fork(server, worker):
|
||||||
pass
|
pass
|
||||||
|
|||||||
@ -27,12 +27,12 @@ class MemoryWatch(threading.Thread):
|
|||||||
while True:
|
while True:
|
||||||
for (pid, worker) in list(self.server.WORKERS.items()):
|
for (pid, worker) in list(self.server.WORKERS.items()):
|
||||||
if self.memory_usage(pid) > self.max_mem:
|
if self.memory_usage(pid) > self.max_mem:
|
||||||
self.server.log.info("Pid %s killed (memory usage > %s)" % (
|
self.server.log.info("Pid %s killed (memory usage > %s)",
|
||||||
pid, self.max_mem))
|
pid, self.max_mem)
|
||||||
self.server.kill_worker(pid, signal.SIGQUIT)
|
self.server.kill_worker(pid, signal.SIGQUIT)
|
||||||
time.sleep(self.timeout)
|
time.sleep(self.timeout)
|
||||||
|
|
||||||
|
|
||||||
def when_ready(server):
|
def when_ready(server):
|
||||||
mw = MemoryWatch(server, max_mem)
|
mw = MemoryWatch(server, max_mem)
|
||||||
mw.start()
|
mw.start()
|
||||||
|
|||||||
@ -52,7 +52,7 @@ class Arbiter(object):
|
|||||||
|
|
||||||
def __init__(self, app):
|
def __init__(self, app):
|
||||||
self.log = logging.getLogger(__name__)
|
self.log = logging.getLogger(__name__)
|
||||||
self.log.info("Starting gunicorn %s" % __version__)
|
self.log.info("Starting gunicorn %s", __version__)
|
||||||
|
|
||||||
os.environ["SERVER_SOFTWARE"] = SERVER_SOFTWARE
|
os.environ["SERVER_SOFTWARE"] = SERVER_SOFTWARE
|
||||||
|
|
||||||
@ -97,7 +97,7 @@ class Arbiter(object):
|
|||||||
if self.cfg.debug:
|
if self.cfg.debug:
|
||||||
self.log.debug("Current configuration:")
|
self.log.debug("Current configuration:")
|
||||||
for config, value in sorted(self.cfg.settings.iteritems()):
|
for config, value in sorted(self.cfg.settings.iteritems()):
|
||||||
self.log.debug(" %s: %s" % (config, value.value))
|
self.log.debug(" %s: %s", config, value.value)
|
||||||
|
|
||||||
if self.cfg.preload_app:
|
if self.cfg.preload_app:
|
||||||
if not self.cfg.debug:
|
if not self.cfg.debug:
|
||||||
@ -119,9 +119,9 @@ class Arbiter(object):
|
|||||||
self.pidfile = Pidfile(self.cfg.pidfile)
|
self.pidfile = Pidfile(self.cfg.pidfile)
|
||||||
self.pidfile.create(self.pid)
|
self.pidfile.create(self.pid)
|
||||||
self.log.debug("Arbiter booted")
|
self.log.debug("Arbiter booted")
|
||||||
self.log.info("Listening at: %s (%s)" % (self.LISTENER,
|
self.log.info("Listening at: %s (%s)", self.LISTENER,
|
||||||
self.pid))
|
self.pid)
|
||||||
self.log.info("Using worker: %s" %
|
self.log.info("Using worker: %s",
|
||||||
self.cfg.settings['worker_class'].get())
|
self.cfg.settings['worker_class'].get())
|
||||||
|
|
||||||
self.cfg.when_ready(self)
|
self.cfg.when_ready(self)
|
||||||
@ -144,7 +144,7 @@ class Arbiter(object):
|
|||||||
self.SIG_QUEUE.append(sig)
|
self.SIG_QUEUE.append(sig)
|
||||||
self.wakeup()
|
self.wakeup()
|
||||||
else:
|
else:
|
||||||
self.log.warn("Dropping signal: %s" % sig)
|
self.log.warn("Dropping signal: %s", sig)
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
"Main master loop."
|
"Main master loop."
|
||||||
@ -163,15 +163,15 @@ class Arbiter(object):
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
if sig not in self.SIG_NAMES:
|
if sig not in self.SIG_NAMES:
|
||||||
self.log.info("Ignoring unknown signal: %s" % sig)
|
self.log.info("Ignoring unknown signal: %s", sig)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
signame = self.SIG_NAMES.get(sig)
|
signame = self.SIG_NAMES.get(sig)
|
||||||
handler = getattr(self, "handle_%s" % signame, None)
|
handler = getattr(self, "handle_%s" % signame, None)
|
||||||
if not handler:
|
if not handler:
|
||||||
self.log.error("Unhandled signal: %s" % signame)
|
self.log.error("Unhandled signal: %s", signame)
|
||||||
continue
|
continue
|
||||||
self.log.info("Handling signal: %s" % signame)
|
self.log.info("Handling signal: %s", signame)
|
||||||
handler()
|
handler()
|
||||||
self.wakeup()
|
self.wakeup()
|
||||||
except StopIteration:
|
except StopIteration:
|
||||||
@ -183,7 +183,7 @@ class Arbiter(object):
|
|||||||
except SystemExit:
|
except SystemExit:
|
||||||
raise
|
raise
|
||||||
except Exception:
|
except Exception:
|
||||||
self.log.info("Unhandled exception in main loop:\n%s" %
|
self.log.info("Unhandled exception in main loop:\n%s",
|
||||||
traceback.format_exc())
|
traceback.format_exc())
|
||||||
self.stop(False)
|
self.stop(False)
|
||||||
if self.pidfile is not None:
|
if self.pidfile is not None:
|
||||||
@ -202,7 +202,7 @@ class Arbiter(object):
|
|||||||
- Start the new worker processes with a new configuration
|
- Start the new worker processes with a new configuration
|
||||||
- Gracefully shutdown the old worker processes
|
- Gracefully shutdown the old worker processes
|
||||||
"""
|
"""
|
||||||
self.log.info("Hang up: %s" % self.master_name)
|
self.log.info("Hang up: %s", self.master_name)
|
||||||
self.reload()
|
self.reload()
|
||||||
|
|
||||||
def handle_quit(self):
|
def handle_quit(self):
|
||||||
@ -275,9 +275,9 @@ class Arbiter(object):
|
|||||||
def halt(self, reason=None, exit_status=0):
|
def halt(self, reason=None, exit_status=0):
|
||||||
""" halt arbiter """
|
""" halt arbiter """
|
||||||
self.stop()
|
self.stop()
|
||||||
self.log.info("Shutting down: %s" % self.master_name)
|
self.log.info("Shutting down: %s", self.master_name)
|
||||||
if reason is not None:
|
if reason is not None:
|
||||||
self.log.info("Reason: %s" % reason)
|
self.log.info("Reason: %s", reason)
|
||||||
if self.pidfile is not None:
|
if self.pidfile is not None:
|
||||||
self.pidfile.unlink()
|
self.pidfile.unlink()
|
||||||
sys.exit(exit_status)
|
sys.exit(exit_status)
|
||||||
@ -349,7 +349,7 @@ class Arbiter(object):
|
|||||||
if old_address != self.cfg.address:
|
if old_address != self.cfg.address:
|
||||||
self.LISTENER.close()
|
self.LISTENER.close()
|
||||||
self.LISTENER = create_socket(self.cfg)
|
self.LISTENER = create_socket(self.cfg)
|
||||||
self.log.info("Listening at: %s" % self.LISTENER)
|
self.log.info("Listening at: %s", self.LISTENER)
|
||||||
|
|
||||||
# spawn new workers with new app & conf
|
# spawn new workers with new app & conf
|
||||||
for i in range(self.app.cfg.workers):
|
for i in range(self.app.cfg.workers):
|
||||||
@ -382,7 +382,7 @@ class Arbiter(object):
|
|||||||
except ValueError:
|
except ValueError:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
self.log.critical("WORKER TIMEOUT (pid:%s)" % pid)
|
self.log.critical("WORKER TIMEOUT (pid:%s)", pid)
|
||||||
self.kill_worker(pid, signal.SIGKILL)
|
self.kill_worker(pid, signal.SIGKILL)
|
||||||
|
|
||||||
def reap_workers(self):
|
def reap_workers(self):
|
||||||
@ -441,7 +441,7 @@ class Arbiter(object):
|
|||||||
worker_pid = os.getpid()
|
worker_pid = os.getpid()
|
||||||
try:
|
try:
|
||||||
util._setproctitle("worker [%s]" % self.proc_name)
|
util._setproctitle("worker [%s]" % self.proc_name)
|
||||||
self.log.info("Booting worker with pid: %s" % worker_pid)
|
self.log.info("Booting worker with pid: %s", worker_pid)
|
||||||
self.cfg.post_fork(self, worker)
|
self.cfg.post_fork(self, worker)
|
||||||
worker.init_process()
|
worker.init_process()
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
@ -453,7 +453,7 @@ class Arbiter(object):
|
|||||||
sys.exit(self.WORKER_BOOT_ERROR)
|
sys.exit(self.WORKER_BOOT_ERROR)
|
||||||
sys.exit(-1)
|
sys.exit(-1)
|
||||||
finally:
|
finally:
|
||||||
self.log.info("Worker exiting (pid: %s)" % worker_pid)
|
self.log.info("Worker exiting (pid: %s)", worker_pid)
|
||||||
try:
|
try:
|
||||||
worker.tmp.close()
|
worker.tmp.close()
|
||||||
self.cfg.worker_exit(self, worker)
|
self.cfg.worker_exit(self, worker)
|
||||||
|
|||||||
@ -46,7 +46,7 @@ class BaseSocket(object):
|
|||||||
try:
|
try:
|
||||||
self.sock.close()
|
self.sock.close()
|
||||||
except socket.error, e:
|
except socket.error, e:
|
||||||
log.info("Error while closing socket %s" % str(e))
|
log.info("Error while closing socket %s", str(e))
|
||||||
time.sleep(0.3)
|
time.sleep(0.3)
|
||||||
del self.sock
|
del self.sock
|
||||||
|
|
||||||
@ -133,13 +133,13 @@ def create_socket(conf):
|
|||||||
return sock_type(conf)
|
return sock_type(conf)
|
||||||
except socket.error, e:
|
except socket.error, e:
|
||||||
if e[0] == errno.EADDRINUSE:
|
if e[0] == errno.EADDRINUSE:
|
||||||
log.error("Connection in use: %s" % str(addr))
|
log.error("Connection in use: %s", str(addr))
|
||||||
if e[0] == errno.EADDRNOTAVAIL:
|
if e[0] == errno.EADDRNOTAVAIL:
|
||||||
log.error("Invalid address: %s" % str(addr))
|
log.error("Invalid address: %s", str(addr))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
if i < 5:
|
if i < 5:
|
||||||
log.error("Retrying in 1 second.")
|
log.error("Retrying in 1 second.")
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
||||||
log.error("Can't connect to %s" % str(addr))
|
log.error("Can't connect to %s", str(addr))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|||||||
@ -41,7 +41,7 @@ class EventletWorker(AsyncWorker):
|
|||||||
while self.alive:
|
while self.alive:
|
||||||
self.notify()
|
self.notify()
|
||||||
if self.ppid != os.getppid():
|
if self.ppid != os.getppid():
|
||||||
self.log.info("Parent changed, shutting down: %s" % self)
|
self.log.info("Parent changed, shutting down: %s", self)
|
||||||
break
|
break
|
||||||
|
|
||||||
eventlet.sleep(1.0)
|
eventlet.sleep(1.0)
|
||||||
|
|||||||
@ -73,7 +73,7 @@ class GeventWorker(AsyncWorker):
|
|||||||
while self.alive:
|
while self.alive:
|
||||||
self.notify()
|
self.notify()
|
||||||
if self.ppid != os.getppid():
|
if self.ppid != os.getppid():
|
||||||
self.log.info("Parent changed, shutting down: %s" % self)
|
self.log.info("Parent changed, shutting down: %s", self)
|
||||||
break
|
break
|
||||||
|
|
||||||
gevent.sleep(1.0)
|
gevent.sleep(1.0)
|
||||||
@ -139,7 +139,7 @@ class GeventBaseWorker(Worker):
|
|||||||
self.notify()
|
self.notify()
|
||||||
|
|
||||||
if self.ppid != os.getppid():
|
if self.ppid != os.getppid():
|
||||||
self.log.info("Parent changed, shutting down: %s" % self)
|
self.log.info("Parent changed, shutting down: %s", self)
|
||||||
break
|
break
|
||||||
|
|
||||||
gevent.sleep(1.0)
|
gevent.sleep(1.0)
|
||||||
|
|||||||
@ -34,7 +34,7 @@ class TornadoWorker(Worker):
|
|||||||
self.notify()
|
self.notify()
|
||||||
|
|
||||||
if self.ppid != os.getppid():
|
if self.ppid != os.getppid():
|
||||||
self.log.info("Parent changed, shutting down: %s" % self)
|
self.log.info("Parent changed, shutting down: %s", self)
|
||||||
self.ioloop.stop()
|
self.ioloop.stop()
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
|
|||||||
@ -45,7 +45,7 @@ class SyncWorker(base.Worker):
|
|||||||
|
|
||||||
# If our parent changed then we shut down.
|
# If our parent changed then we shut down.
|
||||||
if self.ppid != os.getppid():
|
if self.ppid != os.getppid():
|
||||||
self.log.info("Parent changed, shutting down: %s" % self)
|
self.log.info("Parent changed, shutting down: %s", self)
|
||||||
return
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user