mirror of
https://github.com/frappe/gunicorn.git
synced 2026-01-14 11:09:11 +08:00
don't depend on entry point for internal classes.
We don't have to depend on entry points when loading suppoorted workers nad extensions, instead use the absolute path to load the class. fix #259
This commit is contained in:
parent
9dc5d685c3
commit
a397d90774
@ -123,8 +123,13 @@ class Config(object):
|
||||
@property
|
||||
def logger_class(self):
|
||||
uri = self.settings['logger_class'].get()
|
||||
logger_class = util.load_class(uri, default="simple",
|
||||
section="gunicorn.loggers")
|
||||
if uri == "simple":
|
||||
# support the default
|
||||
uri = "gunicorn.glogging.Logger"
|
||||
else:
|
||||
logger_class = util.load_class(uri,
|
||||
default="gunicorn.glogging.Logger",
|
||||
section="gunicorn.loggers")
|
||||
|
||||
if hasattr(logger_class, "install"):
|
||||
logger_class.install()
|
||||
@ -1005,7 +1010,7 @@ class LoggerClass(Setting):
|
||||
cli = ["--logger-class"]
|
||||
meta = "STRING"
|
||||
validator = validate_class
|
||||
default = "simple"
|
||||
default = "gunicorn.glogging.Logger"
|
||||
desc = """\
|
||||
The logger you want to use to log events in gunicorn.
|
||||
|
||||
|
||||
@ -21,6 +21,7 @@ import warnings
|
||||
|
||||
from gunicorn.errors import AppImportError
|
||||
from gunicorn.six import text_type, string_types
|
||||
from gunicorn.workers import SUPPORTED_WORKERS
|
||||
|
||||
MAXFD = 1024
|
||||
REDIRECT_TO = getattr(os, 'devnull', '/dev/null')
|
||||
@ -96,7 +97,8 @@ relative import to an absolute import.
|
||||
return sys.modules[name]
|
||||
|
||||
|
||||
def load_class(uri, default="sync", section="gunicorn.workers"):
|
||||
def load_class(uri, default="gunicorn.workers.sync.SyncWorker",
|
||||
section="gunicorn.workers"):
|
||||
if inspect.isclass(uri):
|
||||
return uri
|
||||
if uri.startswith("egg:"):
|
||||
@ -117,16 +119,21 @@ def load_class(uri, default="sync", section="gunicorn.workers"):
|
||||
else:
|
||||
components = uri.split('.')
|
||||
if len(components) == 1:
|
||||
try:
|
||||
while True:
|
||||
if uri.startswith("#"):
|
||||
uri = uri[1:]
|
||||
|
||||
return pkg_resources.load_entry_point("gunicorn",
|
||||
section, uri)
|
||||
except:
|
||||
exc = traceback.format_exc()
|
||||
raise RuntimeError("class uri %r invalid or not found: \n\n[%s]" % (uri,
|
||||
exc))
|
||||
if uri in SUPPORTED_WORKERS:
|
||||
components = SUPPORTED_WORKERS[uri].split(".")
|
||||
break
|
||||
|
||||
try:
|
||||
return pkg_resources.load_entry_point("gunicorn",
|
||||
section, uri)
|
||||
except:
|
||||
exc = traceback.format_exc()
|
||||
raise RuntimeError("class uri %r invalid or not found: \n\n[%s]" % (uri,
|
||||
exc))
|
||||
|
||||
klass = components.pop(-1)
|
||||
try:
|
||||
|
||||
@ -0,0 +1,14 @@
|
||||
# -*- coding: utf-8 -
|
||||
#
|
||||
# This file is part of gunicorn released under the MIT license.
|
||||
# See the NOTICE for more information.
|
||||
|
||||
# supported gunicorn workers.
|
||||
SUPPORTED_WORKERS={
|
||||
"sync": "gunicorn.workers.sync.SyncWorker",
|
||||
"eventlet": "gunicorn.workers.geventlet.EventletWorker",
|
||||
"gevent": "gunicorn.workers.ggevent.GeventWorker",
|
||||
"gevent_wsgi": "gunicorn.workers.ggevent.GeventPyWSGIWorker",
|
||||
"gevent_pywsgi": "gunicorn.workers.ggevent.GeventPyWSGIWorker",
|
||||
"tornado": "gunicorn.workers.gtornado.TornadoWorker"}
|
||||
|
||||
@ -1,2 +1,4 @@
|
||||
pytest
|
||||
pytest-cov
|
||||
py==1.4.19
|
||||
pytest==2.5.1
|
||||
pytest-cov==1.6
|
||||
wsgiref==0.1.2
|
||||
|
||||
11
setup.py
11
setup.py
@ -89,17 +89,6 @@ setup(
|
||||
gunicorn_django=gunicorn.app.djangoapp:run
|
||||
gunicorn_paster=gunicorn.app.pasterapp:run
|
||||
|
||||
[gunicorn.workers]
|
||||
sync=gunicorn.workers.sync:SyncWorker
|
||||
eventlet=gunicorn.workers.geventlet:EventletWorker
|
||||
gevent=gunicorn.workers.ggevent:GeventWorker
|
||||
gevent_wsgi=gunicorn.workers.ggevent:GeventPyWSGIWorker
|
||||
gevent_pywsgi=gunicorn.workers.ggevent:GeventPyWSGIWorker
|
||||
tornado=gunicorn.workers.gtornado:TornadoWorker
|
||||
|
||||
[gunicorn.loggers]
|
||||
simple=gunicorn.glogging:Logger
|
||||
|
||||
[paste.server_runner]
|
||||
main=gunicorn.app.pasterapp:paste_server
|
||||
"""
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user