mirror of
https://github.com/frappe/gunicorn.git
synced 2026-01-14 11:09:11 +08:00
clean a little the eventlet worker
This commit is contained in:
parent
80cd1f40ed
commit
2ddbe800a5
@ -46,40 +46,31 @@ class EventletWorker(AsyncWorker):
|
|||||||
|
|
||||||
if self.ppid != os.getppid():
|
if self.ppid != os.getppid():
|
||||||
self.log.info("Parent changed, shutting down: %s" % self)
|
self.log.info("Parent changed, shutting down: %s" % self)
|
||||||
greenthread.kill(acceptor, eventlet.StopServe)
|
|
||||||
break
|
break
|
||||||
|
|
||||||
eventlet.sleep(0.1)
|
eventlet.sleep(0.1)
|
||||||
|
|
||||||
with eventlet.Timeout(self.timeout, False):
|
|
||||||
if pool.waiting():
|
|
||||||
pool.waitall()
|
|
||||||
|
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
# we stopped
|
||||||
|
greenthread.kill(acceptor, eventlet.StopServe)
|
||||||
|
with eventlet.Timeout(self.timeout, False):
|
||||||
|
if pool.waiting():
|
||||||
|
pool.waitall()
|
||||||
|
|
||||||
|
|
||||||
def acceptor(self, pool):
|
def acceptor(self, pool):
|
||||||
greenthread.getcurrent()
|
|
||||||
while self.alive:
|
while self.alive:
|
||||||
try:
|
try:
|
||||||
conn, addr = self.socket.accept()
|
try:
|
||||||
gt = pool.spawn(self.handle, conn, addr)
|
conn, addr = self.socket.accept()
|
||||||
gt.link(self.cleanup, conn)
|
except socket.error, e:
|
||||||
conn, addr, gt = None, None, None
|
if err[0] == errno.EAGAIN:
|
||||||
except eventlet.StopServe:
|
sys.exc_clear()
|
||||||
return
|
return
|
||||||
|
raise
|
||||||
|
pool.spawn_n(self.handle, conn, addr)
|
||||||
except:
|
except:
|
||||||
self.log.exception("Unexpected error in acceptor. Sepuku.")
|
self.log.exception("Unexpected error in acceptor. Sepuku.")
|
||||||
os._exit(4)
|
os._exit(4)
|
||||||
|
|
||||||
def cleanup(self, thread, conn):
|
|
||||||
try:
|
|
||||||
try:
|
|
||||||
thread.wait()
|
|
||||||
finally:
|
|
||||||
conn.close()
|
|
||||||
except greenlet.GreenletExit:
|
|
||||||
pass
|
|
||||||
except Exception:
|
|
||||||
self.log.exception("Unhandled exception in worker.")
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user