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!

¿Fue útil?

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
scroll top