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>
|
||||
Phil Schanely <phil@daylife.com>
|
||||
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.SIGWINCH, self.handle_winch)
|
||||
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):
|
||||
self.log.reopen_files()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user