首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >巨蟒乌鸦。发送部分帧

巨蟒乌鸦。发送部分帧
EN

Stack Overflow用户
提问于 2014-03-19 20:09:38
回答 1查看 126关注 0票数 0

在我们的项目中,乌鸦花费了很多时间来创建和发送消息到哨兵。我们检查了创建有关帧的数据的许多时间成本,但我们并不经常需要所有帧的数据。有没有可能以及如何创建关于不是所有帧的数据,只是在有异常或错误的帧之前的最后2-3帧,并通过raven将其发送到哨兵。或者是否有可能在消息级别创建依赖全栈/部分栈?即在关键或异常或错误级别发送整个堆栈,而在调试或警告级别仅发送帧的一部分。

EN

回答 1

Stack Overflow用户

发布于 2014-04-18 17:13:53

对Django使用此处理程序:

代码语言:javascript
复制
from raven.contrib.django.handlers import SentryHandler as BaseSentryHandler
from raven.utils.stacks import iter_stack_frames


class SentryHandler(BaseSentryHandler):

    def emit(self, record):
        if not getattr(record, 'stack', None):
            record.stack = self._get_stack(record)

        return super(SentryHandler, self).emit(record)

    def _get_targetted_stack(self, stack):
        return stack

    def _get_stack(self, record):
        """Remove non-interesting parts of the stack.
        """
        stack = iter_stack_frames()

        frames = []

        for item in stack:
            if isinstance(item, (list, tuple)):
                frame, lineno = item
            else:
                frame, lineno = item, item.f_lineno

            frames.append((frame, lineno))

        # remove parts after the `logging` module was entered
        for frame_no in reversed(xrange(len(frames))):
            frame, line_no = frames[frame_no]
            module_name = getattr(frame, 'f_globals', {}).get('__name__', '')
            if module_name.startswith('logging'):
                del frames[:frame_no + 1]
                break
        else:
            # the entry point to `logging` module was not found
            return frames

        return frames
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22505392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档