mirror of
https://github.com/frappe/gunicorn.git
synced 2026-01-14 11:09:11 +08:00
keep graceful shutdown from interrupting workers
When the signal.siginterrupt call is available it can be used to make interrupted system calls (errno == EINTR) retry transparently whenever they have not caused any side effects yet (e.g. no data read/written). It should make shutdown more graceful. Patch by Jonas Borgström
This commit is contained in:
parent
ba730b1f18
commit
4633d1aad9
1
THANKS
1
THANKS
@ -33,3 +33,4 @@ Masahiro Nakagawa <repeatedly@gmail.com>
|
|||||||
Denis Bilenko <denis.bilenko@gmail.com>
|
Denis Bilenko <denis.bilenko@gmail.com>
|
||||||
Phil Schanely <phil@daylife.com>
|
Phil Schanely <phil@daylife.com>
|
||||||
Chris Lamb <lamby@debian.org>
|
Chris Lamb <lamby@debian.org>
|
||||||
|
Jonas Borgström <jonas@borgstrom.se>
|
||||||
|
|||||||
@ -110,6 +110,11 @@ class Worker(object):
|
|||||||
signal.signal(signal.SIGINT, self.handle_exit)
|
signal.signal(signal.SIGINT, self.handle_exit)
|
||||||
signal.signal(signal.SIGWINCH, self.handle_winch)
|
signal.signal(signal.SIGWINCH, self.handle_winch)
|
||||||
signal.signal(signal.SIGUSR1, self.handle_usr1)
|
signal.signal(signal.SIGUSR1, self.handle_usr1)
|
||||||
|
# Don't let SIGQUIT and SIGUSR1 disturb active requests
|
||||||
|
# by interrupting system calls
|
||||||
|
if hasattr(signal, 'siginterrupt'): # python >= 2.6
|
||||||
|
signal.siginterrupt(signal.SIGQUIT, False)
|
||||||
|
signal.siginterrupt(signal.SIGUSR1, False)
|
||||||
|
|
||||||
def handle_usr1(self, sig, frame):
|
def handle_usr1(self, sig, frame):
|
||||||
self.log.reopen_files()
|
self.log.reopen_files()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user