123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- # -*- coding: utf-8 -
- #
- # This file is part of gunicorn released under the MIT license.
- # See the NOTICE for more information.
- import configparser
- import os
- from paste.deploy import loadapp
- from gunicorn.app.wsgiapp import WSGIApplication
- from gunicorn.config import get_default_config_file
- def get_wsgi_app(config_uri, name=None, defaults=None):
- if ':' not in config_uri:
- config_uri = "config:%s" % config_uri
- return loadapp(
- config_uri,
- name=name,
- relative_to=os.getcwd(),
- global_conf=defaults,
- )
- def has_logging_config(config_file):
- parser = configparser.ConfigParser()
- parser.read([config_file])
- return parser.has_section('loggers')
- def serve(app, global_conf, **local_conf):
- """\
- A Paste Deployment server runner.
- Example configuration:
- [server:main]
- use = egg:gunicorn#main
- host = 127.0.0.1
- port = 5000
- """
- config_file = global_conf['__file__']
- gunicorn_config_file = local_conf.pop('config', None)
- host = local_conf.pop('host', '')
- port = local_conf.pop('port', '')
- if host and port:
- local_conf['bind'] = '%s:%s' % (host, port)
- elif host:
- local_conf['bind'] = host.split(',')
- class PasterServerApplication(WSGIApplication):
- def load_config(self):
- self.cfg.set("default_proc_name", config_file)
- if has_logging_config(config_file):
- self.cfg.set("logconfig", config_file)
- if gunicorn_config_file:
- self.load_config_from_file(gunicorn_config_file)
- else:
- default_gunicorn_config_file = get_default_config_file()
- if default_gunicorn_config_file is not None:
- self.load_config_from_file(default_gunicorn_config_file)
- for k, v in local_conf.items():
- if v is not None:
- self.cfg.set(k.lower(), v)
- def load(self):
- return app
- PasterServerApplication().run()
|