def instrument(self): if self.instrumented: return skip_env_var = 'SKIP_INSTRUMENT_' + str(self.name.upper()) if skip_env_var in os.environ: logger.debug("Skipping instrumentation of %s. %s is set.", self.name, skip_env_var) return try: instrument_list = self.get_instrument_list() skipped_modules = set() for module, method in instrument_list: try: # Skip modules we already failed to load if module in skipped_modules: continue # We jump through hoop here to get the original # `module`/`method` in the call to `call_if_sampling` (parent, attribute, original) = resolve_path(module, method) wrapper = OriginalNamesFunctionWrapper( original, self.call_if_sampling, module, method ) wrapt.apply_patch(parent, attribute, wrapper) except ImportError: # Could not import module logger.debug("Skipping instrumentation of %s." " Module %s not found", self.name, module) # Keep track of modules we couldn't load so we don't # try to instrument anything in that module again skipped_modules.add(module) except AttributeError as ex: # Could not find thing in module logger.debug("Skipping instrumentation of %s.%s: %s", module, method, ex) except ImportError as ex: logger.debug("Skipping instrumentation of %s. %s", self.name, ex) self.instrumented = True
def instrument(self, client=None): if client: self.client = client if self.instrumented: return skip_env_var = 'SKIP_INSTRUMENT_' + str(self.name.upper()) if skip_env_var in os.environ: logger.debug("Skipping instrumentation of %s. %s is set.", self.name, skip_env_var) return try: instrument_list = self.get_instrument_list() skipped_modules = set() for module, method in instrument_list: try: # Skip modules we already failed to load if module in skipped_modules: continue # We jump through hoop here to get the original # `module`/`method` in the call to `call_if_sampling` (parent, attribute, original) = resolve_path(module, method) wrapper = OriginalNamesFunctionWrapper( original, self.call_if_sampling, module, method) wrapt.apply_patch(parent, attribute, wrapper) except ImportError: # Could not import module logger.debug( "Skipping instrumentation of %s." " Module %s not found", self.name, module) # Keep track of modules we couldn't load so we don't # try to instrument anything in that module again skipped_modules.add(module) except AttributeError as ex: # Could not find thing in module logger.debug("Skipping instrumentation of %s.%s: %s", module, method, ex) except ImportError as ex: logger.debug("Skipping instrumentation of %s. %s", self.name, ex) self.instrumented = True
def instrument(self, client=None): if client: self.client = client if self.instrumented: return skip_env_var = 'SKIP_INSTRUMENT_' + str(self.name.upper()) if skip_env_var in os.environ: logger.debug("Skipping instrumentation of %s. %s is set.", self.name, skip_env_var) return try: instrument_list = self.get_instrument_list() for module, method in instrument_list: try: # We jump through hoop here to get the original # `module`/`method` in the call to `call_if_sampling` (parent, attribute, original) = resolve_path(module, method) wrapper = OriginalNamesFunctionWrapper( original, self.call_if_sampling, module, method ) wrapt.apply_patch(parent, attribute, wrapper) except ImportError: # Could not import thing logger.debug("Skipping instrumentation of %s." " Module %s not found", self.name, module) except AttributeError as ex: logger.debug("Skipping instrumentation of %s.%s: %s", module, method, ex) except ImportError as ex: logger.debug("Skipping instrumentation of %s. %s", self.name, ex) self.instrumented = True