在django视图中禁用对新relic的监视

时间:2015-07-09 09:15:46

标签: javascript python django django-views newrelic-platform

我正在使用 Django框架(版本1.5.1)和近25个内部应用程序,每个应用程序都有7到15个不同的视图,非常多。

所以要监控RPM,查询时间等。 。和optime代码响应我正在使用 New Relic (免费)服务,它非常有用,来监控模板/请求的响应时间< / strong>在加载页面之前对页面进行 javascript 注入

Normaly不是坏事,除非你的发送电子邮件每天都有一个 html渲染页面,它们在地球上是因为js注入了html文学吃/破坏html。

如果您手动发送这些邮件,那么您可以在发送之前验证内容,但在我的情况下,这是一个crontab taks,所以这对我来说不是解决方案。

在官方文档中, disable_browser_autorum 功能正是我所需要的,但是(再次)你可以在 WSGI服务器中使用 newrelic.disable_browser_autorum 变量,但我正在运行一个带有supervisord的 gunicorn服务器,所以这不好。

但是还有 newrelic.agent.disable_browser_autorum(flag = True)变量,您必须在框架视图中插入该变量并与html引号一起使用。

{% load staticfiles newrelic_tags %}
<!DOCTYPE html>
<html lang="{{ LANGUAGE_CODE }}">
<head>
    <meta charset="utf-8" />
    {% newrelic_browser_timing_header %}
<body>
  . 
  .
  .

   {% newrelic_browser_timing_footer %}
</body>
</html>

但是没有关于如何做到这一点的信息,我也自己做了测试,试图找出如何使用它。

我不是python或django的大开发者,但是经验不足它必须是

class EmailView(DetailView):
    template_name = 'email/daily-newsletter.html'
    model = News

    def get_queryset(self):
        return News.objects.filter(date=datetime.date.today())

    def get_context_data(self, **kwargs):
        context = super(EmailView, self).get_context_data(**kwargs)
        context['related_news'] = NewsRelated.objects.get(related=self.id)

        >> HERE DO SOMETHING LIKE self.request.something =newrelic.agent.disable_browser_autorum(flag=True)<<
        return context

有人可以帮我一把吗?任何建议都很好。

PS:我已经posted a question官方的New Relic社区,但到目前为止没有运气。

1 个答案:

答案 0 :(得分:4)

非常感谢我的同事和@Daniel Roseman的帮助解决了我的问题,这是一个简单的解决方案:

import newrelic.agent
. . .

class EmailView(DetailView):
    template_name = 'email/daily-newsletter.html'
    model = News

    def get_queryset(self):
        return News.objects.filter(date=datetime.date.today())

    def get_context_data(self, **kwargs):
        context = super(EmailView, self).get_context_data(**kwargs)
        context['related_news'] = NewsRelated.objects.get(related=self.id)

        newrelic.agent.disable_browser_autorum(flag=True)
        return context

然后我的同事评论说,这是一个'环境变量',所以只需将它放在那里就可以了。

就是这样。