osi.waitpid patching is broken in eventlet and prevent arbiter to exit.

Waiting upstream fixes, don't patch it for now.
This commit is contained in:
benoitc 2010-07-08 19:30:55 +02:00
parent 3b8e594200
commit 9af95b7f8d
3 changed files with 17 additions and 16 deletions

View File

@ -3,12 +3,10 @@
# This file is part of gunicorn released under the MIT license. # This file is part of gunicorn released under the MIT license.
# See the NOTICE for more information. # See the NOTICE for more information.
from wsgiref.validate import validator
import time import time
@validator
def app(environ, start_response): def app(environ, start_response):
"""Application which cooperatively pauses 10 seconds before responding""" """Application which cooperatively pauses 10 seconds before responding"""
data = 'Hello, World!\n' data = 'Hello, World!\n'

View File

@ -17,7 +17,6 @@ from gunicorn.workers.async import ALREADY_HANDLED
from eventlet import pools from eventlet import pools
import eventlet import eventlet
from eventlet.common import get_errno
class WebSocketWSGI(object): class WebSocketWSGI(object):
def __init__(self, handler): def __init__(self, handler):

View File

@ -25,7 +25,7 @@ class EventletWorker(AsyncWorker):
import eventlet import eventlet
if eventlet.version_info < (0,9,7): if eventlet.version_info < (0,9,7):
raise RuntimeError("You need eventlet >= 0.9.7") raise RuntimeError("You need eventlet >= 0.9.7")
eventlet.monkey_patch() eventlet.monkey_patch(os=False)
def init_process(self): def init_process(self):
hubs.use_hub() hubs.use_hub()
@ -40,19 +40,23 @@ class EventletWorker(AsyncWorker):
pool = greenpool.GreenPool(self.worker_connections) pool = greenpool.GreenPool(self.worker_connections)
acceptor = greenthread.spawn(self.acceptor, pool) acceptor = greenthread.spawn(self.acceptor, pool)
while self.alive: try:
self.notify() while self.alive:
self.notify()
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) greenthread.kill(acceptor, eventlet.StopServe)
break break
eventlet.sleep(0.1) eventlet.sleep(0.1)
with eventlet.Timeout(self.timeout, False): with eventlet.Timeout(self.timeout, False):
pool.waitall() if pool.waiting():
os._exit(3) pool.waitall()
except KeyboardInterrupt:
pass
def acceptor(self, pool): def acceptor(self, pool):
greenthread.getcurrent() greenthread.getcurrent()