Question

Je dois comparer les performances d'une application Flask que les utilisations jinja2.Template.render contre jinja2.Template.stream pour être sûr qu'il n'y a pas de perte de performances en utilisant la diffusion de modèles.

Mon idée (très simple, de) était d'imprimer l'horodatage avant et après le rendu du modèle, mais depuis la page Web est renvoyée par une fonction, je ne suis pas tout à fait sûr de savoir comment mettre en œuvre cette ...

Ma fonction est:

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)

Et ce que je dois mesure est le temps passé par

return template.render(message=message)

vs

return Response(template.stream(message=message))

merci!

Était-ce utile?

La solution

Vous devez regarder l'horloge du système avant et après l'appel.

Il est plus facile de le faire si vous ne retournez pas immédiatement la réponse de template.render ou template.stream.

IE:

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top