Flask + Jinja2:如何衡量表演

时间:2011-11-30 10:15:37

标签: python performance flask jinja2

我需要比较使用jinja2.Template.renderjinja2.Template.stream的Flask应用程序的性能,以确保使用模板流不会丢失性能。

我(非常简单)的想法是在呈现模板之前和之后打印时间戳,但由于网页是由函数返回的,我不太确定如何实现这个...

我的功能是:

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)

我需要衡量的是

花费的时间
return template.render(message=message)

VS

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

谢谢!

1 个答案:

答案 0 :(得分:1)

您需要在通话前后查看系统时钟。

如果您不立即从template.render或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