diff --git a/jupyter_server/extension/utils.py b/jupyter_server/extension/utils.py index 6e0270c54e..53dd046dea 100644 --- a/jupyter_server/extension/utils.py +++ b/jupyter_server/extension/utils.py @@ -1,5 +1,6 @@ """Extension utilities.""" import importlib +import time import warnings @@ -62,7 +63,15 @@ def get_metadata(package_name, logger=None): If it doesn't exist, return a basic metadata packet given the module name. """ + start_time = time.perf_counter() module = importlib.import_module(package_name) + end_time = time.perf_counter() + duration = end_time - start_time + # Sometimes packages can take a *while* to import, so we report how long + # each module took to import. This makes it much easier for users to report + # slow loading modules upstream, as slow loading modules will block server startup + if logger: + logger.info(f"Package {package_name} took {duration:.4f}s to import") try: return module, module._jupyter_server_extension_points()