You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					66 lines
				
				1.8 KiB
			
		
		
			
		
	
	
					66 lines
				
				1.8 KiB
			| 
								 
											8 years ago
										 
									 | 
							
								# -*- coding: utf-8 -
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# This file is part of gunicorn released under the MIT license.
							 | 
						||
| 
								 | 
							
								# See the NOTICE for more information.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import os
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								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:
							 | 
						||
| 
								 | 
							
								            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 load_wsgiapp(self):
							 | 
						||
| 
								 | 
							
								        # load the app
							 | 
						||
| 
								 | 
							
								        return util.import_app(self.app_uri)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def load_pasteapp(self):
							 | 
						||
| 
								 | 
							
								        # load the paste app
							 | 
						||
| 
								 | 
							
								        from .pasterapp import load_pasteapp
							 | 
						||
| 
								 | 
							
								        return load_pasteapp(self.cfgurl, self.relpath, global_conf=self.cfg.paste_global_conf)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    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()
							 |