Frage

Ich muss die Leistungen einer Flask -Anwendung vergleichen, die verwendet jinja2.Template.render gegen jinja2.Template.stream Um sicherzustellen, dass es keinen Verlust von Leistungen unter Verwendung des Streaming von Vorlagen gibt.

Meine (sehr einfache) Idee war es, den Zeitstempel vor und nach der Wiedergabe der Vorlage zu drucken, aber da die Webseite von einer Funktion zurückgegeben wird, bin ich mir nicht ganz sicher, wie ich diese implementieren soll ...

Meine Funktion ist:

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)

Und was ich messen muss, ist die Zeit, die von verbracht wurde

return template.render(message=message)

vs

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

Danke!

War es hilfreich?

Lösung

Sie müssen sich die Systemuhr vor und nach dem Anruf ansehen.

Dies ist einfacher, wenn Sie die Antwort von template.render oder template.stream nicht sofort zurückgeben.

Dh:

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top