Flask + Jinja2:パフォーマンスの測定方法
-
26-10-2019 - |
質問
使用するフラスコアプリケーションのパフォーマンスを比較する必要があります jinja2.Template.render
に対して jinja2.Template.stream
テンプレートのストリーミングを使用してパフォーマンスの損失がないことを確認してください。
私の(非常に簡単な)アイデアは、テンプレートのレンダリングの前後にタイムスタンプを印刷することでしたが、Webページは関数によって返されるため、これを実装する方法がよくわかりません...
私の機能は次のとおりです。
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))
ありがとう!
解決
通話の前後にシステムクロックを見る必要があります。
template.renderまたはtemplate.streamからすぐに応答を返さないと、これを行う方が簡単です。
つまり:
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
所属していません StackOverflow