python类trace()的实例源码

threaded.py 文件源码 项目:acris 作者: Acrisel 项目源码 文件源码 阅读 40 收藏 0 点赞 0 评论 0
def threaded(method): 
    @wraps(method)
    def wrapper(*args, **kwargs): 
        treated_result = ThreadedResult() 
        def _method(): 
            treated_result.start()
            try: 
                result=method(*args, **kwargs) 
            except Exception as e: 
                trace=inspect.trace()
                trace=traces(trace, 2)
                treated_result.fail(trace)
            else:
                treated_result.succeed(result)
        t=Thread(target = _method)
        t.start() 
        treated_result.set_thread(t)
        return treated_result 
    return wrapper
threaded.py 文件源码 项目:acris 作者: Acrisel 项目源码 文件源码 阅读 44 收藏 0 点赞 0 评论 0
def __call__(self,method):
        @wraps(method)
        def wrapper(*args, **kwargs): 
            async_result = ThreadedResult() 
            def _method(): 
                async_result.start()
                try: 
                    result=method(*args, **kwargs) 
                except Exception as e: 
                    trace=inspect.trace()
                    trace=traces(trace,start=0, end=None)
                    if self.log: logger.error("%s\n    %s" % (repr(e), '\n    '.join(trace)))
                    async_result.fail(trace)
                else:
                    async_result.succeed(result)
            t=Thread(target = _method)
            t.start() 
            async_result.set_thread(t)
            return async_result 
        return wrapper
utils.py 文件源码 项目:vmware-nsxlib 作者: openstack 项目源码 文件源码 阅读 25 收藏 0 点赞 0 评论 0
def _log_after_retry(func, trial_number, trial_time_taken):
    """After call strategy that logs to some logger the finished attempt."""
    # Using inspect to get arguments of the relevant call
    frames = inspect.trace()
    # Look at frame #2 first because of the internal functions _do_X
    formated_args = _get_args_from_frame(frames, 2)
    if not formated_args:
        formated_args = _get_args_from_frame(frames, 1)
    if not formated_args:
        formated_args = "Unknown"

    LOG.warning("Finished retry of %(func)s for the %(num)s time after "
                "%(time)0.3f(s) with args: %(args)s",
                {'func': tenacity_utils.get_callback_name(func),
                 'num': tenacity_utils.to_ordinal(trial_number),
                 'time': trial_time_taken,
                 'args': formated_args})
common.py 文件源码 项目:brush 作者: chenshiyang2015 项目源码 文件源码 阅读 31 收藏 0 点赞 0 评论 0
def exception_error():
    error_message = ""
    for i in range(len(inspect.trace())):
        error_line = """
File:      %s - [%s]
Function:  %s
Statement: %s
-------------------------------------------------------------------------------------------""" % (
        inspect.trace()[i][1],
        inspect.trace()[i][2],
        inspect.trace()[i][3],
        inspect.trace()[i][4])

        error_message = "%s%s" % (error_message, error_line)


    error_message = """Error!
%s
%s
======================================== Error Message ====================================%s

======================================== Error Message ======================================================""" % (sys.exc_info()[0], sys.exc_info()[1], error_message)

    return error_message
views.py 文件源码 项目:wagtail-sharing 作者: cfpb 项目源码 文件源码 阅读 54 收藏 0 点赞 0 评论 0
def get_requested_page(site, request, path):
        """Retrieve a page from a site given a request and path.

        This method uses the standard `wagtail.wagtailcore.Page.route` method
        to retrieve a page using its path from the given site root.

        If a requested page exists and is published, the result of `Page.route`
        can be returned directly.

        If the page exists but is not yet published, `Page.route` raises an
        `Http404`, which this method tries to catch and handle. `Page.route`
        raises `Http404` in two cases: if no page with the given path exists
        and if a page exists but is unpublished. This method catches both
        cases, and, if they fall into the latter category, returns the
        requested page back to the caller despite its draft status.
        """
        path_components = [
            component for component in path.split('/') if component
        ]

        try:
            return site.root_page.route(request, path_components)
        except Http404:
            exception_source = inspect.trace()[-1]
            stack_frame = exception_source[0]

            page = stack_frame.f_locals['self']
            path_components = stack_frame.f_locals['path_components']

            if path_components:
                raise

            return page, [], {}
main.py 文件源码 项目:eventor 作者: Acrisel 项目源码 文件源码 阅读 31 收藏 0 点赞 0 评论 0
def __log_error(self, task, stop_on_exception):
        logutil=module_logger.error if stop_on_exception else module_logger.warning
        err_exception, pickle_trace=task.result
        err_trace=pickle.loads(pickle_trace)

        logutil('Exception in run_action: \n    {}'.format(task,)) #)
        logutil("%s" % (repr(err_exception), ))
        trace='\n'.join([line.rstrip() for line in err_trace])
        if trace: logutil("%s" % (trace, ) )
main.py 文件源码 项目:eventor 作者: Acrisel 项目源码 文件源码 阅读 40 收藏 0 点赞 0 评论 0
def __initiate_delay(self, task, previous_task=None):
        ''' Runs delay function associated with task to register delay in delay table
        '''
        delay=self.__delays[task.step_id]
        module_logger.debug("Initiating delay: %s (previous=%s)" % (delay.delay_id, repr(previous_task)))
        active=True
        activated=datetime.utcnow()

        if previous_task is not None:
            prev_delay=self.__previous_delays[task.sequence][task.step_id]
            active=prev_delay.active
            activated=prev_delay.activated
            module_logger.debug("Fetched delay from previous: active: %s, activated: %s" % (active, activated))

        delay_func=delay.func
        try:
            result=delay_func(activated=activated, active=active, sequence=task.sequence, recovery=task.recovery)
        except Exception as e:
            task.status=TaskStatus.failure
            module_logger.critical('Exception in task execution: \n    {}'.format(task,)) #)
            trace=inspect.trace()
            trace=traces(trace)
            module_logger.critical("%s\n    %s" % (repr(e), '\n    '.join(trace)))
            module_logger.info("Stopping running processes") 
            self.__state=EventorState.shutdown

        if result:
            task.status=TaskStatus.success

        result=TaskAdminMsg(msg_type=TaskAdminMsgType.result, value=task) 
        adminq=self.__adminq_th
        adminq.put( result )
inspect_fodder.py 文件源码 项目:devsecops-example-helloworld 作者: boozallen 项目源码 文件源码 阅读 33 收藏 0 点赞 0 评论 0
def argue(self, a, b, c):
        try:
            spam(a, b, c)
        except:
            self.ex = sys.exc_info()
            self.tr = inspect.trace()

# line 48
threaded.py 文件源码 项目:acris 作者: Acrisel 项目源码 文件源码 阅读 28 收藏 0 点赞 0 评论 0
def traces(trace, start=0, end=None):
    '''
     File "/private/var/acrisel/sand/gradior/gradior/gradior/gradior/loop_task.py", line 41, in task_wrapper
    '''
    result=[ "File \"%s\", line %s, in %s\n    %s" % (frame.filename, frame.lineno, frame.function, frame.code_context[0].rstrip()) for frame in trace]
    return result
inspect_fodder.py 文件源码 项目:zippy 作者: securesystemslab 项目源码 文件源码 阅读 29 收藏 0 点赞 0 评论 0
def argue(self, a, b, c):
        try:
            spam(a, b, c)
        except:
            self.ex = sys.exc_info()
            self.tr = inspect.trace()

# line 48
inspect_fodder.py 文件源码 项目:oil 作者: oilshell 项目源码 文件源码 阅读 33 收藏 0 点赞 0 评论 0
def argue(self, a, b, c):
        try:
            spam(a, b, c)
        except:
            self.ex = sys.exc_info()
            self.tr = inspect.trace()

# line 48
inspect_fodder.py 文件源码 项目:python2-tracer 作者: extremecoders-re 项目源码 文件源码 阅读 30 收藏 0 点赞 0 评论 0
def argue(self, a, b, c):
        try:
            spam(a, b, c)
        except:
            self.ex = sys.exc_info()
            self.tr = inspect.trace()

# line 48
execute.py 文件源码 项目:shoogle 作者: tokland 项目源码 文件源码 阅读 39 收藏 0 点赞 0 评论 0
def run(options):
    """Run command execute."""
    service_id, resource_name, method_name = lib.pad_list(options.api_path.split(".", 2), 3)
    request_fd = (sys.stdin if options.json_request == "-" else open(options.json_request))
    method_options = lib.load_json(request_fd.read())
    try:
        response = do_request(service_id, resource_name, method_name, method_options, options)
        lib.output(lib.pretty_json(response))
    except TypeError as error:
        frm = inspect.trace()[-1]
        mod = inspect.getmodule(frm[0])
        if mod.__name__ == 'googleapiclient.discovery':
            config.logger.error("googleapiclient.discovery: {}".format(error))
        else:
            raise
inspect_fodder.py 文件源码 项目:web_ctp 作者: molebot 项目源码 文件源码 阅读 34 收藏 0 点赞 0 评论 0
def argue(self, a, b, c):
        try:
            spam(a, b, c)
        except:
            self.ex = sys.exc_info()
            self.tr = inspect.trace()

# line 48
exceptions.py 文件源码 项目:thrive 作者: intuit 项目源码 文件源码 阅读 31 收藏 0 点赞 0 评论 0
def info(self):
        """
        @rtype: dict
        @return: Exception name, raiser function and raiser module
        """
        sr = super(ThriveBaseException, self).__repr__()
        try:
            callframe = inspect.trace()[-1]
            origin_funcname = callframe[3]
            origin_module = os.path.basename(callframe[1])
        except IndexError:
            origin_funcname = origin_module = ""

        return {"exception": sr, "function": origin_funcname, "module": origin_module}
fw.py 文件源码 项目:reahl 作者: reahl 项目源码 文件源码 阅读 34 收藏 0 点赞 0 评论 0
def create(self, relative_path, *args, **kwargs):
        try:
            create_kwargs = self.create_kwargs(relative_path, **kwargs)
            create_args = self.create_args(relative_path, *args)
            return super(FactoryFromUrlRegex, self).create(*create_args, **create_kwargs)
        except TypeError as ex:
            if len(inspect.trace()) == 1:
                # Note: we modify the args, and then just raise, because we want the original stack trace
                ex.args = (ex.args[0]+' (from regex "%s")' % self.regex_path.regex,)
            raise
exception.py 文件源码 项目:mogan 作者: openstack 项目源码 文件源码 阅读 31 收藏 0 点赞 0 评论 0
def from_exception(cls, fault):
        trace = inspect.trace()[-1]
        module = inspect.getmodule(trace[0])
        module_name = module.__name__ if module else 'unknown'
        return cls(
            function_name=trace[3],
            module_name=module_name,
            exception=fault.__class__.__name__,
            exception_message=six.text_type(fault))
inspect_fodder.py 文件源码 项目:pefile.pypy 作者: cloudtracer 项目源码 文件源码 阅读 31 收藏 0 点赞 0 评论 0
def argue(self, a, b, c):
        try:
            spam(a, b, c)
        except:
            self.ex = sys.exc_info()
            self.tr = inspect.trace()

# line 48
inspect_fodder.py 文件源码 项目:ouroboros 作者: pybee 项目源码 文件源码 阅读 34 收藏 0 点赞 0 评论 0
def argue(self, a, b, c):
        try:
            spam(a, b, c)
        except:
            self.ex = sys.exc_info()
            self.tr = inspect.trace()

# line 48
inspect_fodder.py 文件源码 项目:ndk-python 作者: gittor 项目源码 文件源码 阅读 27 收藏 0 点赞 0 评论 0
def argue(self, a, b, c):
        try:
            spam(a, b, c)
        except:
            self.ex = sys.exc_info()
            self.tr = inspect.trace()

# line 48
inspect_fodder.py 文件源码 项目:deb-python-linecache2 作者: openstack 项目源码 文件源码 阅读 28 收藏 0 点赞 0 评论 0
def argue(self, a, b, c):
        try:
            spam(a, b, c)
        except:
            self.ex = sys.exc_info()
            self.tr = inspect.trace()

# line 48
detector.py 文件源码 项目:nav 作者: UNINETT 项目源码 文件源码 阅读 42 收藏 0 点赞 0 评论 0
def with_exception_logging(func):
    """Decorates a function to log unhandled exceptions"""
    def _decorator(*args, **kwargs):
        try:
            return func(*args, **kwargs)
        except Exception:
            stacktrace = inspect.trace()[1:]
            logger = logging.getLogger(__name__)
            logger.exception("An unhandled exception occurred")
            log_last_django_query(logger)
            log_stacktrace(logging.getLogger('nav.topology.stacktrace'),
                           stacktrace)
            raise

    return wraps(func)(_decorator)
inspect_fodder.py 文件源码 项目:kbe_server 作者: xiaohaoppy 项目源码 文件源码 阅读 28 收藏 0 点赞 0 评论 0
def argue(self, a, b, c):
        try:
            spam(a, b, c)
        except:
            self.ex = sys.exc_info()
            self.tr = inspect.trace()

# line 48
common.py 文件源码 项目:YOHO_Automated_Test 作者: yzwy1988 项目源码 文件源码 阅读 30 收藏 0 点赞 0 评论 0
def exception_error():
    error_message = ""
    for i in range(len(inspect.trace())):
        error_line = u"""
                       File:      %s - [%s]
                       Function:  %s
                       Statement: %s
                       -------------------------------------------------------------------------------------------""" \
                       % (
                       inspect.trace()[i][1],
                       inspect.trace()[i][2],
                       inspect.trace()[i][3],
                       inspect.trace()[i][4])

        error_message = "%s%s" % (error_message, error_line)

    error_message = u"""Error!
                       %s
                       %s
                       ======================================== Error Message ====================================%s
                       ======================================== Error Message ======================================================""" \
                       % (
                       sys.exc_info()[0],
                       sys.exc_info()[1],
                       error_message)

    return error_message
handlers.py 文件源码 项目:django-secure-mail 作者: blag 项目源码 文件源码 阅读 31 收藏 0 点赞 0 评论 0
def get_variable_from_exception(exception, variable_name):
    """
    Grab the variable from closest frame in the stack
    """
    for frame in reversed(trace()):
        try:
            # From http://stackoverflow.com/a/9059407/6461688
            frame_variable = frame[0].f_locals[variable_name]
        except KeyError:
            pass
        else:
            return frame_variable
    else:
        raise KeyError("Variable '%s' not in any stack frames", variable_name)
main.py 文件源码 项目:eventor 作者: Acrisel 项目源码 文件源码 阅读 33 收藏 0 点赞 0 评论 0
def task_wrapper(run_id=None, task=None, step=None, adminq=None, use_process=True, logger_info=None):
    ''' 
    Args:
        func: object with action method with the following signature:
            action(self, action, unit, group, sequencer)    
        action: object with taskid, unit, group: id of the unit to pass
        sqid: sequencer id to pass to action '''
    global module_logger

    if use_process:
        module_logger=MpLogger.get_logger(logger_info=logger_info, name='') # name="%s.%s_%s" %(logger_info['name'], step.name, task.sequence))

    task.pid=os.getpid()
    os.environ['EVENTOR_STEP_SEQUENCE']=str(task.sequence)
    os.environ['EVENTOR_STEP_RECOVERY']=str(task.recovery)
    os.environ['EVENTOR_STEP_NAME']=str(step.name)

    if setproctitle is not None and use_process:
        run_id_s = "%s." % run_id if run_id else ''
        setproctitle("eventor: %s%s.%s(%s)" % (run_id_s, step.name, task.id_, task.sequence))

    # Update task with PID
    update=TaskAdminMsg(msg_type=TaskAdminMsgType.update, value=task) 
    adminq.put( update )
    module_logger.info('[ Step {}/{} ] Trying to run'.format(step.name, task.sequence))

    try:
        # todo: need to pass task resources.
        result=step(seq_path=task.sequence, )
    except Exception as e:
        trace=inspect.trace()
        trace=traces(trace) #[2:]
        task.result=(e, pickle.dumps(trace))
        task.status=TaskStatus.failure
    else:
        task.result=result
        task.status=TaskStatus.success

    result=TaskAdminMsg(msg_type=TaskAdminMsgType.result, value=task) 
    module_logger.info('[ Step {}/{} ] Completed, status: {}'.format(step.name, task.sequence, str(task.status), ))
    adminq.put( result )
    return True
simpleplugin.py 文件源码 项目:plugin.video.auvio 作者: rickybiscus 项目源码 文件源码 阅读 36 收藏 0 点赞 0 评论 0
def debug_exception(logger=None):
    """
    Diagnostic helper context manager

    It controls execution within its context and writes extended
    diagnostic info to the Kodi log if an unhandled exception
    happens within the context. The info includes the following items:

    - Module path.
    - Code fragment where the exception has happened.
    - Global variables.
    - Local variables.

    After logging the diagnostic info the exception is re-raised.

    Example::

        with debug_exception():
            # Some risky code
            raise RuntimeError('Fatal error!')

    :param logger: logger function which must accept a single argument
        which is a log message. By default it is :func:`xbmc.log`
        with ``ERROR`` level.
    """
    try:
        yield
    except:
        if logger is None:
            logger = lambda msg: xbmc.log(msg, xbmc.LOGERROR)
        logger('Unhandled exception detected!')
        logger('*** Start diagnostic info ***')
        frame_info = inspect.trace(5)[-1]
        logger('File: {0}'.format(frame_info[1]))
        context = ''
        for i, line in enumerate(frame_info[4], frame_info[2] - frame_info[5]):
            if i == frame_info[2]:
                context += '{0}:>{1}'.format(str(i).rjust(5), line)
            else:
                context += '{0}: {1}'.format(str(i).rjust(5), line)
        logger('Code context:\n' + context)
        logger('Global variables:\n' + _format_vars(frame_info[0].f_globals))
        logger('Local variables:\n' + _format_vars(frame_info[0].f_locals))
        logger('**** End diagnostic info ****')
        raise


问题


面经


文章

微信
公众号

扫码关注公众号