我有一个 Flask 应用程序,它有多个 REST API。我需要一种方法来跟踪或记录每个 API 请求所花费的时间。我需要一种可以捕获各种请求方法的时间的方法。
有几种不同的方法可以实现这一目标。
a) 编写自己的监控逻辑。例如,您可以利用 Flask 的 @before_request 和 @after_request 挂钩来捕获所有请求的响应时间,将它们写入数据库,然后查询数据库进行分析。
from datetime import datetime
from flask import g
@app.before_request
def start_timer():
g.start_time = datetime.now()
@app.after_request
def log_time(response):
elapsed_time = datetime.now() - g.start_time
# Insert into database ...
return response
b) 使用简单的 API 流量监控解决方案,例如 Apitally,它可以轻松为您提供所需的见解。
c) 使用更全面的第三方监控解决方案,例如New Relic、Datadog等
d) 设置您自己的监控基础设施,例如使用 Prometheus 和 Grafana。您可以使用 prometheus-flask-exporter 将 Flask 指标导出到 Prometheus。
e) 根据 Flask 应用程序的部署方式,您可以配置 Web 服务器以在请求日志中包含响应时间,然后分析这些时间。
(免责声明:我是 Apitally 的作者)。