mirror of
https://github.com/frappe/gunicorn.git
synced 2026-01-14 11:09:11 +08:00
rather than sleeping the timeout, just test if time is elapsed, then
notify. Speed graceful reload and exit.
This commit is contained in:
parent
7ac83b918e
commit
2e39db265c
@ -7,6 +7,8 @@ from __future__ import with_statement
|
||||
|
||||
|
||||
import os
|
||||
import time
|
||||
|
||||
try:
|
||||
import eventlet
|
||||
except ImportError:
|
||||
@ -38,12 +40,17 @@ class EventletWorker(AsyncWorker):
|
||||
self.acceptor = eventlet.spawn(eventlet.serve, self.socket,
|
||||
self.handle, self.worker_connections)
|
||||
|
||||
t = time.time()
|
||||
while self.alive:
|
||||
self.notify()
|
||||
if time.time() >= t:
|
||||
self.notify()
|
||||
t = time.time() + self.timeout
|
||||
|
||||
if self.ppid != os.getppid():
|
||||
self.log.info("Parent changed, shutting down: %s" % self)
|
||||
break
|
||||
eventlet.sleep(self.timeout)
|
||||
|
||||
eventlet.sleep(0.1)
|
||||
|
||||
self.notify()
|
||||
with eventlet.Timeout(self.timeout, False):
|
||||
|
||||
@ -7,6 +7,7 @@ from __future__ import with_statement
|
||||
|
||||
import os
|
||||
import sys
|
||||
import time
|
||||
|
||||
# workaround on osx, disable kqueue
|
||||
if sys.platform == "darwin":
|
||||
@ -72,13 +73,19 @@ class GeventWorker(AsyncWorker):
|
||||
worker=self)
|
||||
|
||||
server.start()
|
||||
t = time.time()
|
||||
try:
|
||||
while self.alive:
|
||||
self.notify()
|
||||
|
||||
if time.time() >= t:
|
||||
self.notify()
|
||||
t = time.time() + self.timeout
|
||||
|
||||
if self.ppid != os.getppid():
|
||||
self.log.info("Parent changed, shutting down: %s" % self)
|
||||
break
|
||||
gevent.sleep(self.timeout)
|
||||
gevent.sleep(0.1)
|
||||
|
||||
except KeyboardInterrupt:
|
||||
pass
|
||||
|
||||
@ -131,14 +138,20 @@ class GeventBaseWorker(Worker):
|
||||
server = self.server_class(self.socket, application=self.wsgi,
|
||||
spawn=pool, handler_class=self.wsgi_handler)
|
||||
server.start()
|
||||
|
||||
t = time.time()
|
||||
try:
|
||||
while self.alive:
|
||||
self.notify()
|
||||
if time.time() >= t:
|
||||
self.notify()
|
||||
t = time.time() + self.timeout
|
||||
|
||||
if self.ppid != os.getppid():
|
||||
self.log.info("Parent changed, shutting down: %s" % self)
|
||||
break
|
||||
gevent.sleep(self.timeout)
|
||||
|
||||
# sleep
|
||||
gevent.sleep(0.1)
|
||||
|
||||
except KeyboardInterrupt:
|
||||
pass
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user