在 Python 中存储 http 请求的痕迹

Store traces of http requests in Python

我想存储为处理 http 请求而执行的 python 代码的踪迹。

我们使用 Python 和 Django。

在此上下文中什么是跟踪?

我想对所有跟踪的 http 请求都使用这个:

对于每个跟踪,代码执行的堆栈跟踪都是 N 倍。在第一步中,将众所周知的 python 回溯存储为字符串就足够了。第一步变量的值不需要存储。

堆栈跟踪可以由主管线程创建,也可以通过源代码中的方法调用显式创建。第一步显式就够了,supervisor线程可以后面做。

跟踪是可选的,仅用于调试和分析。它们不需要处理 http 请求。

如何解决?

这道题是不是理解有欠缺?如果是,请发表评论。

更新

有两种方法可以满足您的需求。一个叫 "tracing",另一个叫 "logging".

跟踪意味着您拥有一些软件(如 trace module),它允许您创建统计信息,哪些方法被调用的频率、方法参数是什么、谁调用了谁等等。

使用跟踪,您需要配置要跟踪的 method/function 个调用。设置很快,但无法查看 methods/functions 的内部。有点傻

此外,您必须编写自己的工具来分析跟踪文件以理解它们。

日志记录更加手动。您需要配置一个日志记录框架,然后在有趣的地方调用日志方法。这使您可以查看局部变量。您可以用有用的方式格式化逻辑数据结构等。

这意味着日志记录功能更强大,但需要更多的手动设置工作。 还需要一些时间来学习如何进行正确的日志记录(不要太多也不要太少)。但是日志记录已经附带了许多强大的工具(日志查看器、日志文件轮换以避免磁盘已满)。

您可以使用中间件来干扰所有请求,然后记录它们。查看 Rhumbix/django-request-logging 的示例实现。

从评论中移出

您可以查看 https://github.com/getsentry/sentry,它是记录错误的专用解决方案。它还具有使用 raven 客户端手动记录数据的方法。