我需要比较使用 jinja2.Template.render
和 jinja2.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)
我需要测量的是花费的时间
by
return template.render(message=message)
vs
return Response(template.stream(message=message))
谢谢!
Response(template.stream(message=message))
实际上并没有创建包含整个页面的完整响应,而是一个可以花费时间处理整个页面的流处理程序... - Giovanni Di Milia@app.before_request
和@app.teardown_request
中实现这个功能,但我认为你需要将其存储在g
对象中。例如,在before函数中添加g.start_time = time.time()
,然后在teardown函数中计算总请求处理时间并将其写入日志。 - tkonefrom time import time
更改为import time
才能让time.time()
正常工作...FYI - timborden