Skip to content

Commit

Permalink
Scrap terrible idea of a custom gunicorn worker and use awesome new L…
Browse files Browse the repository at this point in the history
…ogan magic to fix gevent support (fixes getsentryGH-400)
  • Loading branch information
dcramer committed Sep 13, 2012
1 parent e9db5ca commit 27f9300
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 55 deletions.
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
'django-picklefield>=0.2.0',
'django-templatetag-sugar>=0.1.0',
'gunicorn>=0.14.6',
'logan>=0.4.0',
'logan>=0.5.0',
'pynliner>=0.4.0',
'python-dateutil>=1.5.0,<2.0.0',
'raven>=2.0.5',
Expand Down
57 changes: 3 additions & 54 deletions src/sentry/services/http.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,56 +6,10 @@
:license: BSD, see LICENSE for more details.
"""

import sys
import gunicorn

from gunicorn import arbiter
from gunicorn.app import djangoapp
import gunicorn.util

from django.core.management import call_command
from sentry.services.base import Service


def _setup_app(app):
djangoapp.make_default_env(app.cfg)
djwsgi = gunicorn.util.import_module("gunicorn.app.django_wsgi")
djwsgi.make_wsgi_application()


class SentryApplication(djangoapp.DjangoApplication):

def __init__(self, options):
self.usage = None
self.cfg = None
self.config_file = options.get("config") or ""
self.options = options
self.callable = None
self.project_path = None

self.do_load_config()

for k, v in self.options.items():
if k.lower() in self.cfg.settings and v is not None:
self.cfg.set(k.lower(), v)

def init(self, parser, opts, args):
pass

def do_load_config(self):
original_args = sys.argv
sys.argv = sys.argv[0:1]
try:
return super(SentryApplication, self).do_load_config()
finally:
sys.argv = original_args

def load(self):
# application should be imported at first to setup env
from sentry.wsgi import application
_setup_app(self)
return application


class SentryHTTPServer(Service):
name = 'http'

Expand Down Expand Up @@ -86,12 +40,7 @@ def __init__(self, host=None, port=None, debug=False, workers=None):
if workers:
options['workers'] = workers

self.app = SentryApplication(options)
self.options = options

def run(self):
try:
arbiter.Arbiter(self.app).run()
except RuntimeError, e:
sys.stderr.write("\nError: %s\n\n" % e)
sys.stderr.flush()
sys.exit(1)
call_command('run_gunicorn', **self.options)

0 comments on commit 27f9300

Please sign in to comment.