From d12033e16602362f947c180560b26c71e6d523e9 Mon Sep 17 00:00:00 2001 From: Alexandre Flament Date: Thu, 6 May 2021 09:39:52 +0200 Subject: [PATCH] [mod] Server-Timing header: add render field Add a "render" field to the Server-Timing header This field is the time spent in the searx.webapp.render function (Jinja2 rendering) See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Server-Timing --- searx/webapp.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/searx/webapp.py b/searx/webapp.py index dd1557c9..87c01fc9 100755 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -480,8 +480,11 @@ def render(template_name, override_theme=None, **kwargs): for css in plugin.css_dependencies: kwargs['styles'].add(css) - return render_template( + start_time = default_timer() + result = render_template( '{}/{}'.format(kwargs['theme'], template_name), **kwargs) + request.render_time += default_timer() - start_time + return result def _get_ordered_categories(): @@ -498,6 +501,7 @@ def _get_ordered_categories(): @app.before_request def pre_request(): request.start_time = default_timer() + request.render_time = 0 request.timings = [] request.errors = [] @@ -556,7 +560,8 @@ def add_default_headers(response): @app.after_request def post_request(response): total_time = default_timer() - request.start_time - timings_all = ['total;dur=' + str(round(total_time * 1000, 3))] + timings_all = ['total;dur=' + str(round(total_time * 1000, 3)), + 'render;dur=' + str(round(request.render_time * 1000, 3))] if len(request.timings) > 0: timings = sorted(request.timings, key=lambda v: v['total']) timings_total = ['total_' + str(i) + '_' + v['engine'] +