django - измерение задержки в промежуточном программном обеспечении - PullRequest
1 голос
/ 16 марта 2019

Я написал этот код для django 1.8, чтобы вычислить, сколько времени занимает обработка запроса.Я намеренно заставил просмотр занять 4 секунды, но отображаемое в этом коде время дельты составляет 8 миллисекунд.Любые идеи, как я могу измерить это в промежуточном программном обеспечении?

from datetime import datetime

class MonitorMiddleware(object):
    def process_request(self, request):
        request.start = datetime.now()

    def process_response(self, request, response):
        print 'Took: ', round((datetime.now() - request.start).microseconds / 1000000.0, 3)
        return response

1 Ответ

1 голос
/ 16 марта 2019

Я не уверен, что ваши расчеты времени в порядке. Я копался в исходном коде для django-request-profiler и скомпилировал краткую версию того, как они его реализуют.

from django.utils import timezone
class ProfilingMiddleware:
    def process_request(self, request):
        self.start_ts = timezone.now()

    def process_response(self, request, response):
        self.end_ts = timezone.now()
        duration = (self.end_ts - self.start_ts).total_seconds()
        return response

Я настоятельно советую вам использовать профилировщики django с открытым исходным кодом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...