clean a little the eventlet worker

This commit is contained in:
benoitc 2010-08-11 14:08:32 +02:00
parent 80cd1f40ed
commit 2ddbe800a5

View File

@ -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)
except KeyboardInterrupt:
pass
# we stopped
greenthread.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()
except KeyboardInterrupt:
pass
def acceptor(self, pool): def acceptor(self, pool):
greenthread.getcurrent()
while self.alive: while self.alive:
try:
try: try:
conn, addr = self.socket.accept() conn, addr = self.socket.accept()
gt = pool.spawn(self.handle, conn, addr) except socket.error, e:
gt.link(self.cleanup, conn) if err[0] == errno.EAGAIN:
conn, addr, gt = None, None, None sys.exc_clear()
except eventlet.StopServe:
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.")