mirror of
https://github.com/frappe/gunicorn.git
synced 2026-01-14 11:09:11 +08:00
some fixes in eventlet worker
This commit is contained in:
parent
cf6747dd86
commit
1ac15b4bb2
@ -41,7 +41,7 @@ class EventletWorker(AsyncWorker):
|
|||||||
self.socket.setblocking(1)
|
self.socket.setblocking(1)
|
||||||
|
|
||||||
pool = greenpool.GreenPool(self.worker_connections)
|
pool = greenpool.GreenPool(self.worker_connections)
|
||||||
acceptor = greenthread.spawn(self.acceptor, pool)
|
acceptor = eventlet.spawn(self.acceptor, pool)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
while self.alive:
|
while self.alive:
|
||||||
@ -56,7 +56,7 @@ class EventletWorker(AsyncWorker):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
# we stopped
|
# we stopped
|
||||||
greenthread.kill(acceptor, eventlet.StopServe)
|
eventlet.kill(acceptor, eventlet.StopServe)
|
||||||
with eventlet.Timeout(self.timeout, False):
|
with eventlet.Timeout(self.timeout, False):
|
||||||
if pool.waiting():
|
if pool.waiting():
|
||||||
pool.waitall()
|
pool.waitall()
|
||||||
@ -76,13 +76,17 @@ class EventletWorker(AsyncWorker):
|
|||||||
gt = pool.spawn(self.handle, conn, addr)
|
gt = pool.spawn(self.handle, conn, addr)
|
||||||
gt.link(self._stop_acceptor, acceptor_gt, conn)
|
gt.link(self._stop_acceptor, acceptor_gt, conn)
|
||||||
conn, addr, gt = None, None, None
|
conn, addr, gt = None, None, None
|
||||||
|
except socket.error, e:
|
||||||
|
if e[0] not in (errno.EBADF, errno.EINVAL, errno.ENOTSOCK):
|
||||||
|
self.alive = False
|
||||||
|
break
|
||||||
except eventlet.StopServe:
|
except eventlet.StopServe:
|
||||||
return
|
break
|
||||||
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 _stop_acceptor(self, t, acceptor_gt, conn):
|
def _stop_acceptor(self, t, acceptor_gt, conn):
|
||||||
try:
|
try:
|
||||||
try:
|
try:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user