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:
Benoit Chesneau 2013-05-31 14:47:06 -07:00
commit 438a0e1c66

View File

@ -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]