2017-12-22 10 views
1

Django Pythonの新機能です。関連する情報がポータルにロード/表示されるまで、ユーザーが検索条件を入力した瞬間からの応答時間の計算方法を教えてください。ありがとう。Django Pythonでの応答時間の計算方法

+0

開始時刻(日時、コードの1行目にこれを置く) - 終了時刻(日時、最後にこれを置きますコード行) – Shiva

+1

もっと頑強にしたい場合は[djangoデバッグツールバー](https://django-debug-toolbar.readthedocs.io/en/stable/installation.html#getting-the-code)もご覧くださいあなたのdjangoアプリケーションのさまざまな側面のデバッグ。 –

答えて

3

Djangoは、バックエンド操作のためのPythonフレームワークです。その目的はHTTP要求を処理することです。したがって、この文脈では、「ユーザーが検索条件を入力して関連情報が読み込まれるまで表示する」という質問は非常に曖昧です。あなたの質問は、あなたがインタラクティブなJavascript/Ajaxベースのフロントエンドを見ていることを示唆していますか?

あなたはについての個別のHTTP要求のレンダリング時間を興味があれば、カスタムミドルウェアでこれに近づくことができる、これらの線に沿って何か:

class StatsMiddleware(object): 
    def process_request(self, request): 
     "Start time at request coming in" 
     request.start_time = time.time() 

    def process_response(self, request, response): 
     "End of request, take time" 
     total = time.time() - request.start_time 

     # Add the header. 
     response["X-total-time"] = int(total * 1000) 
     return response 

その後、対応するジャンゴsettings.pyセクションでは、このミドルウェアを追加します。

MIDDLEWARE_CLASSES = (
    ... 
    'app.stats.StatsMiddleware', 
    ... 
) 

応答を生成するまでに要した時間は、カスタムHTTPヘッダー "X-total-time"に追加されます。これには、すべてのレンダリング、計算、第三者システムおよびDB操作が含まれます。

+0

私は自分のappフォルダにstats.pyというファイルを作成し、エラーなく実行しました。この期間をウェブページに表示する方法や、そのような期間を集めることができるどこかを知ることができますか?お知らせ下さい。 Tq。 – KenL

+0

MIDDLEWARE_CLASSESに 'settings.py'で追加すると、結果は応答ごとに 'X-total-time'ヘッダーに表示されます。 結果をページのどこかに表示したい場合は、テンプレートシステムを活用する必要があります。しかし、その方法は、測定にレンダリング時間を省略する可能性があります。 レスポンスヘッダーを表示するには、ウェブコンソール(Firefox)で十分です。 –

-1

インターネットブラウザ(F12)で見ることができます。また、POSTMANを使用すると時間が表示されます。 標準的なPythonライブラリtimeを使用して、コードの実行時間を測定することもできます。

+0

あなたが提案しているアプローチの最小の例を提供する必要があります。このようにあまり役に立たない。 –

1

ここではそれにありますすべてです全体の事

import time 


class StatsMiddleware(object): 

    def process_request(self, request): 
     "Store the start time when the request comes in." 
     request.start_time = time.time() 

    def process_response(self, request, response): 
     "Calculate and output the page generation duration" 
     # Get the start time from the request and calculate how long 
     # the response took. 
     duration = time.time() - request.start_time 

     # Add the header. 
     response["X-Page-Generation-Duration-ms"] = int(duration * 1000) 
     return response 

を行うクラスです。リクエストが入った時刻を保存し、後で取得してください。ちょうどあなたのsettings.pyに追加し、上記のミドルウェアをインストールするには

MIDDLEWARE_CLASSES = (
    'project.stats_middleware.StatsMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    ... 
) 
+0

あなたの答えは@アンドレアスとどう違うのですか? –

+1

実際に私は書いていました。投稿すると、彼はすでに解決策を投稿していました。 –

+0

ありがとうございます。クラスをどこに追加すればいいのか分かりますか? view.py? – KenL