Chcę sprawdzić czas wykonania widoków w mojej witrynie. Może to być zrobione przez dekoratorów, ale ponieważ mam dziesiątki widoków, pomyślałem o zrobieniu tego w oprogramowaniu pośredniczącym, zapisując początkowy czas w słowniku z żądaniem jako kluczem (patrz poniżej), ale martwię się o założenia, które zrobiłem (patrz dalej poniżej):Pomiar czasu wykonywania widoku w oprogramowaniu pośredniczącym Django - dobry pomysł?
class SlowWarningMiddleware:
def __init__(self):
self.time_tracking = {}
def process_view(self, request, view_func, view_args, view_kwargs):
self.time_tracking[request] = time.time()
def process_response(self, request, response):
if request not in self.time_tracking:
return response
delta = time.time() - self.time_tracking[request]
def process_exception(self, request, exception):
if request not in self.time_tracking:
return
delta = time.time() - self.time_tracking[request]
kod spełnia dwie kwestie:
- tego samego wystąpienia pośredniej obsługuje wstępnie widok i po widok logiki.
- Instancja żądania pozostaje tym samym widokiem wstępnym i post-view tego samego wystąpienia.
Czy te założenia są bezpieczne? czy to oprogramowanie pośrednie to dobry pomysł?