3

私はDjango フレームワーク(バージョン 1.5.1) をほぼ 25 の内部アプリで使用しており、それぞれ平均 7 ~ 15 の異なるビューがかなりあります。

RPM、クエリ時間などを監視します。. 私はNew Relic(無料)サービスを使用していますが、非常に便利ですが、テンプレート/リクエストの応答時間を監視するには、ページをロードする前にjavascriptインジェクションを行います

通常、それは悪いことではありません.htmlでレンダリングされたページで毎日メールを送信しない限り、html文学に注入されたjsがhtmlを食べたり破壊したりするため、地獄です。

これらのメールを手で送信する場合は、送信する前に内容を確認できるかもしれませんが、私の場合は crontab taks であるため、それは私にとっては解決策ではありません。

公式ドキュメントには、私が必要としているdisable_browser_autorum関数がありますが、(再び) WSGI serverでnewrelic.disable_browser_autorum変数を使用できますが、私は Supervisord でgunicorn サーバーを実行しているので、それは良くありません。

ただし、フレームワークビューに挿入する必要があり、html 引用符と連携する必要があるnewrelic.agent.disable_browser_autorum(flag=True)変数もあります。

{% 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 コミュニティに質問を投稿しましたが、今のところうまくいきません。

4

1 に答える 1

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

しかし、私の同僚は、newrelic は「環境変数」なので、そこに置くだけで機能するとコメントしました。

それで、それはそれです。

于 2015-07-09T11:35:17.370 に答える