# -*- coding: utf-8 - # # This file is part of gunicorn released under the MIT license. # See the NOTICE for more information. import os import sys from gunicorn.errors import ConfigError from gunicorn.app.base import Application from gunicorn.app import djangoapp from gunicorn import util class WSGIApplication(Application): def init(self, parser, opts, args): if opts.paste and opts.paste is not None: path = os.path.abspath(os.path.normpath( os.path.join(util.getcwd(), opts.paste))) if not os.path.exists(path): raise ConfigError("%r not found" % val) # paste application, load the config self.cfgurl = 'config:%s' % path self.relpath = os.path.dirname(path) from .pasterapp import paste_config return paste_config(self.cfg, self.cfgurl, self.relpath) if len(args) != 1: parser.error("No application module specified.") self.cfg.set("default_proc_name", args[0]) self.app_uri = args[0] def chdir(self): # chdir to the configured path before loading, # default is the current dir os.chdir(self.cfg.chdir) # add the path to sys.path sys.path.insert(0, self.cfg.chdir) def load_wsgiapp(self): self.chdir() # load the app return util.import_app(self.app_uri) def load_pasteapp(self): self.chdir() # load the paste app from .pasterapp import load_pasteapp return load_pasteapp(self.cfgurl, self.relpath, global_conf=None) def load(self): if self.cfg.paste is not None: return self.load_pasteapp() else: return self.load_wsgiapp() def run(): """\ The ``gunicorn`` command line runner for launching Ghunicorn with generic WSGI applications. """ from gunicorn.app.wsgiapp import WSGIApplication WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run() if __name__ == '__main__': run()