mirror of
https://github.com/frappe/gunicorn.git
synced 2026-01-14 11:09:11 +08:00
Merge pull request #532 from kevingessner/master
eventlet: after reaching max_requests, wait up to the graceful_timeout for currently-running requests to complete. fixes #511
This commit is contained in:
commit
438a0e1c66
@ -40,6 +40,9 @@ class EventletWorker(AsyncWorker):
|
||||
|
||||
super(EventletWorker, self).handle(listener, client, addr)
|
||||
|
||||
if not self.alive:
|
||||
raise eventlet.StopServe()
|
||||
|
||||
def run(self):
|
||||
acceptors = []
|
||||
for sock in self.sockets:
|
||||
@ -60,5 +63,10 @@ class EventletWorker(AsyncWorker):
|
||||
eventlet.sleep(1.0)
|
||||
|
||||
self.notify()
|
||||
with eventlet.Timeout(self.cfg.graceful_timeout, False):
|
||||
[eventlet.kill(a, eventlet.StopServe) for a in acceptors]
|
||||
try:
|
||||
with eventlet.Timeout(self.cfg.graceful_timeout) as t:
|
||||
[a.wait() for a in acceptors]
|
||||
except eventlet.Timeout as te:
|
||||
if te != t:
|
||||
raise
|
||||
[a.kill() for a in acceptors]
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user