Flask + Jinja2: Cómo medir el rendimiento
-
26-10-2019 - |
Pregunta
Necesito comparar el rendimiento de una aplicación frascos que usa jinja2.Template.render
contra jinja2.Template.stream
Para asegurarse de que no haya pérdida de actuaciones utilizando la transmisión de plantillas.
Mi idea (muy simple) era imprimir la marca de tiempo antes y después de la representación de la plantilla, pero dado que la página web es devuelta por una función, no estoy muy seguro de cómo implementar esto ...
Mi función es:
def index():
"""main function"""
env = Environment(loader=FileSystemLoader(basedir+'templates'))
#I modify the global variables
env.globals['foo'] = 'bar'
env.globals['build_response']=build_response
get_url = request.args.get('to_print', None)
message = "the input was \"%s\"" % (get_url,)
template = env.get_template('body.html')
return Response(template.stream(message=message))
#return template.render(message=message)
Y lo que necesito medir es el tiempo que pasa
return template.render(message=message)
VS
return Response(template.stream(message=message))
¡Gracias!
Solución
Debe mirar el reloj del sistema antes y después de la llamada.
Es más fácil hacer esto si no devuelve inmediatamente la respuesta de Template.render o Template.stream.
ES DECIR:
from time import time
def index():
# THE REST OF YOUR CODE GOES HERE
start = time.time()
resp = template.render(message=message)
end = time.time()
processing_time = end - start
# LOG PROCESSING TIME SOMEPLACE
return resp
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow