+ Flask Jinja2: comment mesurer les performances
-
26-10-2019 - |
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!
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