diff --git a/isso/__init__.py b/isso/__init__.py index d668f3e..6346e36 100644 --- a/isso/__init__.py +++ b/isso/__init__.py @@ -30,16 +30,15 @@ from __future__ import print_function import pkg_resources dist = pkg_resources.get_distribution("isso") -try: - import uwsgi -except ImportError: - uwsgi = None +# check if exectuable is `isso` and gevent is available +import sys + +if sys.argv[0].startswith("isso"): try: import gevent.monkey; gevent.monkey.patch_all() except ImportError: - gevent = None + pass -import sys import os import errno import logging @@ -140,18 +139,20 @@ class Isso(object): return self.wsgi_app(environ, start_response) -def make_app(conf=None): +def make_app(conf=None, threading=True, multiprocessing=False, uwsgi=False): - if uwsgi: - class App(Isso, uWSGIMixin): - pass - elif gevent or sys.argv[0].endswith("isso"): + if threading: class App(Isso, ThreadedMixin): pass - else: + + if multiprocessing: class App(Isso, ProcessMixin): pass + if uwsgi: + class App(Isso, uWSGIMixin): + pass + isso = App(conf) for host in conf.getiter("general", "host"): diff --git a/isso/run.py b/isso/run.py index 0a156e9..94bdc04 100644 --- a/isso/run.py +++ b/isso/run.py @@ -5,4 +5,5 @@ import os from isso import make_app from isso.core import Config -application = make_app(Config.load(os.environ.get('ISSO_SETTINGS'))) +application = make_app(Config.load(os.environ.get('ISSO_SETTINGS')), + multiprocessing=True)