Merge pull request #158 from pitchum/perf-debug

* Logging time needed to load the python module for an action (versus time needed to execute it).
* Lazy load some python imports (perfs improved a lot).
This commit is contained in:
Alexandre Aubin 2018-04-26 17:00:22 +02:00 committed by GitHub
commit 97f8593ba1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 2 deletions

View file

@ -469,10 +469,13 @@ class ActionsMap(object):
# Lock the moulinette for the namespace
with MoulinetteLock(namespace, timeout):
start = time()
try:
mod = __import__('%s.%s' % (namespace, category),
globals=globals(), level=0,
fromlist=[func_name])
logger.debug('loading python module %s took %.3fs',
'%s.%s' % (namespace, category), time() - start)
func = getattr(mod, func_name)
except (AttributeError, ImportError):
logger.exception("unable to load function %s.%s",
@ -495,7 +498,7 @@ class ActionsMap(object):
return func(**arguments)
finally:
stop = time()
logger.debug('action [%s] ended after %.3fs',
logger.debug('action [%s] executed in %.3fs',
log_id, stop - start)
@staticmethod

View file

@ -1,5 +1,4 @@
import errno
import requests
import json
from moulinette import m18n
@ -17,6 +16,7 @@ def download_text(url, timeout=30, expected_status_code=200):
expected_status_code -- Status code expected from the request. Can be
None to ignore the status code.
"""
import requests # lazy loading this module for performance reasons
# Assumptions
assert isinstance(url, str)