123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- # -*- 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 import util
-
-
- class WSGIApplication(Application):
- def init(self, parser, opts, args):
- if opts.paste and opts.paste is not None:
- app_name = 'main'
- path = opts.paste
- if '#' in path:
- path, app_name = path.split('#')
- path = os.path.abspath(os.path.normpath(
- os.path.join(util.getcwd(), path)))
-
- if not os.path.exists(path):
- raise ConfigError("%r not found" % path)
-
- # paste application, load the config
- self.cfgurl = 'config:%s#%s' % (path, app_name)
- 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 Gunicorn with
- generic WSGI applications.
- """
- from gunicorn.app.wsgiapp import WSGIApplication
- WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run()
-
-
- if __name__ == '__main__':
- run()
|