【问题标题】:How to collect performance metrics in a Flask Application?如何在 Flask 应用程序中收集性能指标?
【发布时间】:2012-05-30 21:19:30
【问题描述】:

收集对烧瓶应用程序发出的所有 HTTP 请求的指标的最佳方法是什么。

我想测量的东西是:

  • 延迟 - 每个请求的时间。
  • 速率 - 每分钟的请求数等。
  • 没有失败 - 如果有失败,有多少等。

我还想将对可变路径的请求分组为一个。例如,对路由“/resource/”的所有请求都应针对名为“RESOURCE”的指标进行测量,而不是针对每个资源单独进行测量。

我目前计划通过编写一个装饰器来做到这一点。缺点是我需要为每种方法添加装饰器。 Flask 有没有办法为我提供钩子来自动测量这些。

【问题讨论】:

  • 这不是您应该在应用程序级别执行的操作,而是在网络服务器级别执行的操作。不,内置网络服务器不应该在生产中使用。
  • 我想在框架(flask/wsgi)级别执行此操作。我没有使用内置的网络服务器。
  • @ThiefMaster 在应用程序中收集指标并将其导出到 Prometheus 是一个有效的解决方案 - WSGI 服务器或代理没有所有重要的信息,您无法细分用户、收集业务指标、将速度分开视图(仅通过 URL 解析)等。这种方法有很多优点。

标签: python flask


【解决方案1】:

查看 flask.Flask.before_requestflask.Flask.teardown_request 装饰器的文档。您需要一些简单且快速的东西来将您的指标发送到 - 查看 graphitescales 以获取合适的后端示例。

一旦你有你的日志聚合后端,那么注册两个函数以在每个请求之前和之后执行是一件简单的事情。

【讨论】:

    【解决方案2】:

    查看New-Relic。 它支持烧瓶,并会给你你想要的措施(和更多)。

    【讨论】:

      猜你喜欢
      • 2020-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-12
      相关资源
      最近更新 更多