> starmerx/engineering
[github]
← cd ../open-source
[开源] · · Python · MIT

django-scout

轻量的 Django ORM 慢查询分析器。我们内部用的,开源出来。

Django ORM 慢查询的最后一道防线。

这是什么

一个 middleware + management command 组合。它做三件事:

  1. 记录每次请求里所有 SQL 的耗时
  2. 超过阈值(比如 200ms)的查询触发报警(写到日志或 webhook)
  3. 管理命令能复盘某个 endpoint 的查询历史

为什么不是 Django Debug Toolbar

Debug Toolbar 太重——开发环境用着还行,生产环境完全不能用。Scout 设计目标就是生产环境可以挂

用法

INSTALLED_APPS += ['scout']
MIDDLEWARE += ['scout.middleware.SlowQueryMiddleware']

SCOUT = {
    'slow_threshold_ms': 200,
    'webhook_url': 'https://hooks.example.com/scout',
    'sample_rate': 0.1,  # 只采样 10% 请求
}

我们用它做什么

  • 上线前查 ORM N+1
  • 监控慢查询回归
  • 给新人 debug 时直接捞现场

不做的事

  • 不持久化所有查询(只采样)
  • 不替代 APM(它只是一个轻量补充)
  • 不做 SQL 改写建议