Merge pull request #1088 from benoitc/fix/905

don't close the unix socket when the worker exit
This commit is contained in:
Benoit Chesneau 2015-07-23 23:50:45 +02:00
commit 89562c776e
2 changed files with 9 additions and 5 deletions

View File

@ -57,7 +57,6 @@ class BaseSocket(object):
self.sock.close()
except socket.error as e:
self.log.info("Error while closing socket %s", str(e))
time.sleep(0.3)
del self.sock
@ -104,6 +103,7 @@ class UnixSocket(BaseSocket):
os.remove(addr)
else:
raise ValueError("%r is not a socket" % addr)
self.parent = os.getpid()
super(UnixSocket, self).__init__(addr, conf, log, fd=fd)
def __str__(self):
@ -118,7 +118,8 @@ class UnixSocket(BaseSocket):
def close(self):
super(UnixSocket, self).close()
os.unlink(self.cfg_addr)
if self.parent == os.getpid():
os.unlink(self.cfg_addr)
def _sock_type(addr):

View File

@ -25,7 +25,6 @@ import greenlet
from gunicorn.http.wsgi import sendfile as o_sendfile
from gunicorn.workers.async import AsyncWorker
def _eventlet_sendfile(fdout, fdin, offset, nbytes):
while True:
try:
@ -87,11 +86,11 @@ def patch_sendfile():
class EventletWorker(AsyncWorker):
def patch(self):
hubs.use_hub()
eventlet.monkey_patch(os=False)
patch_sendfile()
def init_process(self):
hubs.use_hub()
self.patch()
super(EventletWorker, self).init_process()
@ -119,7 +118,11 @@ class EventletWorker(AsyncWorker):
while self.alive:
self.notify()
eventlet.sleep(1.0)
try:
eventlet.sleep(1.0)
except AssertionError:
self.alive = False
break
self.notify()
try: