mirror of
https://github.com/frappe/gunicorn.git
synced 2026-01-14 11:09:11 +08:00
workaround to prevent segfault with current gevent on osx. Disable
kqueue.
This commit is contained in:
parent
5c498b6a89
commit
8d089f95f9
@ -6,12 +6,17 @@
|
|||||||
from __future__ import with_statement
|
from __future__ import with_statement
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
# workaround on osx, disable kqueue
|
||||||
|
if sys.platform == "darwin":
|
||||||
|
os.environ['EVENT_NOKQUEUE'] = "1"
|
||||||
|
|
||||||
|
|
||||||
import gevent
|
import gevent
|
||||||
from gevent.pool import Pool
|
from gevent.pool import Pool
|
||||||
from gevent.server import StreamServer
|
from gevent.server import StreamServer
|
||||||
from gevent import pywsgi, wsgi
|
from gevent import pywsgi, wsgi
|
||||||
from gevent import hub
|
|
||||||
|
|
||||||
import gunicorn
|
import gunicorn
|
||||||
from gunicorn.workers.async import AsyncWorker
|
from gunicorn.workers.async import AsyncWorker
|
||||||
@ -53,6 +58,7 @@ class GeventWorker(AsyncWorker):
|
|||||||
monkey.noisy = False
|
monkey.noisy = False
|
||||||
monkey.patch_all()
|
monkey.patch_all()
|
||||||
|
|
||||||
|
|
||||||
def timeout_ctx(self):
|
def timeout_ctx(self):
|
||||||
return gevent.Timeout(self.cfg.keepalive, False)
|
return gevent.Timeout(self.cfg.keepalive, False)
|
||||||
|
|
||||||
@ -80,6 +86,12 @@ class GeventWorker(AsyncWorker):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def handle_request(self, *args):
|
||||||
|
try:
|
||||||
|
super(GeventWorker, self).handle_request(*args)
|
||||||
|
except gevent.GreenletExit:
|
||||||
|
pass
|
||||||
|
|
||||||
def init_process(self):
|
def init_process(self):
|
||||||
#gevent doesn't reinitialize dns for us after forking
|
#gevent doesn't reinitialize dns for us after forking
|
||||||
#here's the workaround
|
#here's the workaround
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user