workaround to prevent segfault with current gevent on osx. Disable

kqueue.
This commit is contained in:
benoitc 2010-09-01 11:30:20 +02:00
parent 5c498b6a89
commit 8d089f95f9

View File

@ -6,12 +6,17 @@
from __future__ import with_statement
import os
import sys
# workaround on osx, disable kqueue
if sys.platform == "darwin":
os.environ['EVENT_NOKQUEUE'] = "1"
import gevent
from gevent.pool import Pool
from gevent.server import StreamServer
from gevent import pywsgi, wsgi
from gevent import hub
import gunicorn
from gunicorn.workers.async import AsyncWorker
@ -53,6 +58,7 @@ class GeventWorker(AsyncWorker):
monkey.noisy = False
monkey.patch_all()
def timeout_ctx(self):
return gevent.Timeout(self.cfg.keepalive, False)
@ -80,6 +86,12 @@ class GeventWorker(AsyncWorker):
pass
def handle_request(self, *args):
try:
super(GeventWorker, self).handle_request(*args)
except gevent.GreenletExit:
pass
def init_process(self):
#gevent doesn't reinitialize dns for us after forking
#here's the workaround