From 35604f9bb142afda9d953e0c88a296eb9ce58ea8 Mon Sep 17 00:00:00 2001 From: Natalino Busa Date: Thu, 17 Jun 2021 08:39:49 +0800 Subject: [PATCH] Added logging trace for failed import for user-level debugging (#1494) * Added logging trace for failed import for user-level debugging * one logging statement is enough --- rq/utils.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/rq/utils.py b/rq/utils.py index 6bbf7bf7..4eb86c01 100644 --- a/rq/utils.py +++ b/rq/utils.py @@ -132,12 +132,17 @@ def import_attribute(name): # dotted path is not the last-before-end word # E.g.: package_a.package_b.module_a.ClassA.my_static_method # Thus we remove the bits from the end of the name until we can import it + # + # Sometimes the failure during importing is due to a genuine coding error in the imported module + # In this case, the exception is logged as a warning for ease of debugging. + # The above logic will apply anyways regardless of the cause of the import error. while len(module_name_bits): try: module_name = '.'.join(module_name_bits) module = importlib.import_module(module_name) break except ImportError: + logging.warning("Import error for '%s'" % module_name, exc_info=True) attribute_bits.insert(0, module_name_bits.pop()) if module is None: