Domanda

Ho bisogno di confrontare le prestazioni di un'applicazione Flask che usi jinja2.Template.render contro jinja2.Template.stream per essere sicuri che non v'è alcuna perdita di prestazioni che utilizzano il flusso di modelli.

Il mio (molto semplice) idea era quella di stampare il timestamp prima e dopo il rendering del modello, ma dal momento che la pagina web viene restituito da una funzione, non sono del tutto sicuro di come implementare questo ...

La mia funzione è:

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)

E quello che ho bisogno di misura è il tempo trascorso da

return template.render(message=message)

vs

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

grazie!

È stato utile?

Soluzione

È necessario guardare l'orologio di sistema prima e dopo la chiamata.

E 'più facile fare questo se non restituire immediatamente la risposta da template.render o 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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top