From 47e87df132e9cd13eeb35a4f377a14f836be0f75 Mon Sep 17 00:00:00 2001 From: benoitc Date: Thu, 28 Oct 2010 06:05:01 +0200 Subject: [PATCH] display the right error when a worker can't be used. --- gunicorn/app/base.py | 7 ++++++- gunicorn/workers/geventlet.py | 6 ++++-- gunicorn/workers/ggevent.py | 6 ++++-- gunicorn/workers/gtornado.py | 5 ++++- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/gunicorn/app/base.py b/gunicorn/app/base.py index ce9df2490..38879f07b 100644 --- a/gunicorn/app/base.py +++ b/gunicorn/app/base.py @@ -117,7 +117,12 @@ def run(self): raise self.configure_logging() - Arbiter(self).run() + try: + Arbiter(self).run() + except RuntimeError, e: + sys.stderr.write("\nError: %s\n\n" % e) + sys.stderr.flush() + sys.exit(1) def configure_logging(self): """\ diff --git a/gunicorn/workers/geventlet.py b/gunicorn/workers/geventlet.py index 96e32398f..970abecea 100644 --- a/gunicorn/workers/geventlet.py +++ b/gunicorn/workers/geventlet.py @@ -7,8 +7,10 @@ import os - -import eventlet +try: + import eventlet +except ImportError: + raise RuntimeError("You need eventlet installed to use this worker.") from eventlet import hubs from eventlet.greenio import GreenSocket diff --git a/gunicorn/workers/ggevent.py b/gunicorn/workers/ggevent.py index d2b61ae6a..e9e1d9fa7 100644 --- a/gunicorn/workers/ggevent.py +++ b/gunicorn/workers/ggevent.py @@ -12,8 +12,10 @@ if sys.platform == "darwin": os.environ['EVENT_NOKQUEUE'] = "1" - -import gevent +try: + import gevent +except ImportError: + raise RuntimeError("You need gevent installed to use this worker.") from gevent.pool import Pool from gevent.server import StreamServer from gevent import pywsgi, wsgi diff --git a/gunicorn/workers/gtornado.py b/gunicorn/workers/gtornado.py index 2f73ad812..5bea9291f 100644 --- a/gunicorn/workers/gtornado.py +++ b/gunicorn/workers/gtornado.py @@ -6,7 +6,10 @@ import os import sys -import tornado.web +try: + import tornado.web +except ImportError: + raise RuntimeError("You need tornado installed to use this worker.") from tornado.httpserver import HTTPServer from tornado.ioloop import IOLoop, PeriodicCallback from tornado.wsgi import WSGIContainer