Отключить мониторинг новой реликвии в представлениях django
Я использую фреймворк Django (версия 1.5.1) с почти 25 внутренними приложениями, каждое из которых имеет среднее от 7 до 15 различных представлений, довольно много.
Таким образом, чтобы контролировать RPM, время запроса и т. Д., и optime кода ответа я использую сервис New Relic (бесплатно), и он очень полезен, НО для мониторинга времени ответа шаблона / запроса он делает инъекцию JavaScript в страницу перед загрузкой.
Обычно это не так уж и плохо, если вы не отправляете электронную почту ежедневно с помощью страницы, отображаемой в формате html, это ад на земле, потому что js, введенный в html-литературу, ест / уничтожает html.
Если вы отправляете эти письма вручную, то, возможно, вы можете проверить содержимое перед отправкой, но в моем случае это crontab, так что это не решение для меня.
В официальных документах есть функция disable_browser_autorum, это как раз то, что мне нужно, НО (опять же) вы можете использовать переменную newrelic.disable_browser_autorum на сервере WSGI, но я запускаю сервер оружейного оружия с супервизором, так что это не хорошо.
Но есть также переменная 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: я уже опубликовал вопрос об официальном сообществе New Relic, но пока безуспешно.
1 ответ
Что ж, благодаря моей коллеге и помощи @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
Но затем мой коллега заметил, что новая реликвия - это "переменная окружения", так что, просто поместив ее туда, она будет работать.
Вот и все.