From dcd9a1053d9d8722e9da45e5210c612f99c8b58d Mon Sep 17 00:00:00 2001 From: Aditya Hase Date: Mon, 22 Oct 2018 21:39:24 +0530 Subject: [PATCH] feat(recorder): Create uuid in RecorderMiddleware --- frappe/app.py | 7 ++++--- frappe/middlewares.py | 20 +++++++++++++++----- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/frappe/app.py b/frappe/app.py index f872f79bc9..b3f806370e 100644 --- a/frappe/app.py +++ b/frappe/app.py @@ -58,8 +58,6 @@ def recorder(function): wrapper.calls.append(data) return result - import uuid - wrapper.uuid = str(uuid.uuid1()) wrapper.calls = list() wrapper.path = frappe.request.path return wrapper @@ -84,9 +82,12 @@ def persist(function): in chronological order """ path = function.path - uuid = function.uuid calls = function.calls + # RecorderMiddleware creates a uuid for every request and + # stores it in request environ + uuid = frappe.request.environ["uuid"] + # Redis Sorted Set -> Ordered set (Ordereed by `score`) # Elements are ordered from low to high score diff --git a/frappe/middlewares.py b/frappe/middlewares.py index fe7a8bfb14..d0b7b4c333 100644 --- a/frappe/middlewares.py +++ b/frappe/middlewares.py @@ -2,6 +2,7 @@ # MIT License. See license.txt from __future__ import unicode_literals +import uuid import frappe import os @@ -38,8 +39,17 @@ class RecorderMiddleware(object): start_response(status, headers, exc_info) return response_body.append - appiter = self._app(environ, catching_start_response) - response_body.extend(appiter) - if hasattr(appiter, 'close'): - appiter.close() - return [b''.join(response_body)] + def runapp(): + appiter = self._app(environ, catching_start_response) + response_body.extend(appiter) + if hasattr(appiter, 'close'): + appiter.close() + + # Every request is assigned a uuid here, + # uuid is available to everyone as frappe.request.environ["uuid"] + # SQL calls and profile details can't be recorded and accessed without this + environ["uuid"] = str(uuid.uuid1()) + + runapp() + body = [b''.join(response_body)] + return body