应用程序探查器

这个模块提供了一个中间件,用 cProfile 模块。这有助于识别代码中可能减慢应用程序速度的瓶颈。

class werkzeug.middleware.profiler.ProfilerMiddleware(app, stream=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>, sort_by=('time', 'calls'), restrictions=(), profile_dir=None, filename_format='{method}.{path}.{elapsed:.0f}ms.{time:.0f}.prof')

包装一个WSGi应用程序并分析每个请求的执行情况。对响应进行缓冲,以便更准确地计时。

如果 stream 给出, pstats.Stats 在每次请求后都会写入。如果 profile_dir 给出, cProfile 数据文件保存到该目录中,每个请求一个文件。

可以通过传递自定义文件名 filename_format .如果是字符串,则将使用 str.format() 以下字段可用:

  • {{method}} -请求方法;获取、发布等。

  • {{path}} -请求路径或“根”不应存在。

  • {{elapsed}} -请求的已用时间。

  • {{time}} -请求的时间。

如果它是可调用的,则将使用wsgi调用它 environ 并应返回文件名。

参数:
  • app (WSGIApplication) -- 要包装的wsgi应用程序。

  • stream (t.IO[str] | None) -- 将统计信息写入此流。禁用 None .

  • sort_by (t.Iterable[str]) -- 用于排序统计信息的列的元组。参见 pstats.Stats.sort_stats() .

  • restrictions (t.Iterable[str | int | float]) -- 用于筛选统计信息的一组限制。参见 pstats.Stats.print_stats() .

  • profile_dir (str | None) -- 将配置文件数据文件保存到此目录。

  • filename_format (str) -- 配置文件数据文件名的格式字符串,或返回名称的可调用字符串。见上述说明。

from werkzeug.middleware.profiler import ProfilerMiddleware
app = ProfilerMiddleware(app)
Changelog

在 0.15 版本发生变更: 即使在 profile_dir 是给定的,可以通过传递禁用 stream=None .

在 0.15 版本加入: 补充 filename_format .

在 0.9 版本加入: 补充 restrictionsprofile_dir .