我正在使用 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社区,但到目前为止没有运气。
答案 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
然后我的同事评论说,这是一个'环境变量',所以只需将它放在那里就可以了。
就是这样。