mirror of
https://github.com/frappe/gunicorn.git
synced 2026-01-14 11:09:11 +08:00
Use importlib instead of __import__ and eval (#2043)
This commit is contained in:
parent
b12d364095
commit
3701ad9f26
@ -7,6 +7,7 @@ import email.utils
|
|||||||
import errno
|
import errno
|
||||||
import fcntl
|
import fcntl
|
||||||
import html
|
import html
|
||||||
|
import importlib
|
||||||
import inspect
|
import inspect
|
||||||
import io
|
import io
|
||||||
import logging
|
import logging
|
||||||
@ -364,19 +365,17 @@ def import_app(module):
|
|||||||
module, obj = parts[0], parts[1]
|
module, obj = parts[0], parts[1]
|
||||||
|
|
||||||
try:
|
try:
|
||||||
__import__(module)
|
mod = importlib.import_module(module)
|
||||||
except ImportError:
|
except ImportError:
|
||||||
if module.endswith(".py") and os.path.exists(module):
|
if module.endswith(".py") and os.path.exists(module):
|
||||||
msg = "Failed to find application, did you mean '%s:%s'?"
|
msg = "Failed to find application, did you mean '%s:%s'?"
|
||||||
raise ImportError(msg % (module.rsplit(".", 1)[0], obj))
|
raise ImportError(msg % (module.rsplit(".", 1)[0], obj))
|
||||||
raise
|
raise
|
||||||
|
|
||||||
mod = sys.modules[module]
|
|
||||||
|
|
||||||
is_debug = logging.root.level == logging.DEBUG
|
is_debug = logging.root.level == logging.DEBUG
|
||||||
try:
|
try:
|
||||||
app = eval(obj, vars(mod))
|
app = getattr(mod, obj)
|
||||||
except NameError:
|
except AttributeError:
|
||||||
if is_debug:
|
if is_debug:
|
||||||
traceback.print_exception(*sys.exc_info())
|
traceback.print_exception(*sys.exc_info())
|
||||||
raise AppImportError("Failed to find application object %r in %r" % (obj, module))
|
raise AppImportError("Failed to find application object %r in %r" % (obj, module))
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user