如何在 Heroku 生产系统中跟踪代码

How to trace code in a Heroku production system

我的 Python/Django 代码在 heroku 生产代码中的行为与在我的开发机器上的行为不同。

我要debug/trace呢。

因为它在 Heroku 上运行。据我所知,我无法在代码中插入 import pydevd_pycharm; pydevd_pycharm.settrace(...

我用PyCharm.

但我不需要花哨的 GUI。命令行工具也可以。

如果我能看到在特定 http 请求期间执行的所有行,我会很高兴。

生产系统如何解决这个问题?

我不知道有什么工具可以做到这一点,但你不应该 运行 经常遇到这个问题。所以我不会费心去尝试解决这个问题,而只是在您认为可以方便地调试这个问题的地方添加日志语句。

为了了解您的本地开发环境与 Heroku 生产环境之间的区别,我会 首先 将应用程序部署在另一个 Heroku Dyno 上,例如 a Free您可以轻松创建和管理的 Dyno
然后,您可以集成所需的工具并根据需要添加日志语句。

即使您能够 debug/inspect 生产运行时,能够在类似生产的系统上进行测试以及早发现问题并在不猜测的情况下调查问题也非常重要。

在 Prod 系统上,您调试应用程序的选项有限:

  • 考虑代码更改(即添加日志记录),但正如您所指出的,这涉及 PR 和新版本
  • 调试器:将您最喜欢的调试器(即PyCharm)连接到远程应用程序。这是(几乎)没有人做的事情(考虑到安全方面和对应用程序性能的可能影响),我怀疑你的系统 admins/DevOps 会同意