为了调试我在 Heroku 上看到但在我的本地机器上没有看到的错误,我正在尝试进行逐步调试。
典型的import pdb; pdb.set_trace()
方法不适用于 Heroku,因为您无法访问连接到应用程序的控制台,但显然您可以使用rpdb,这是 pdb 的“远程”版本。
所以我安装了 rpdb,并import rpdb; rpdb.set_trace()
在适当的位置添加。当我发出命中 rpdb 行的请求时,应用程序按预期挂起,我在 heroku 日志中看到以下内容:
pdb is running on 3d0c9fdd-c18a-4cc2-8466-da6671a72cbc:4444
好的,那么如何连接到正在运行的 pdb?我试图heroku run nc 3d0c9fdd-c18a-4cc2-8466-da6671a72cbc 4444
尝试从 heroku 的系统中连接到命名主机,但这只是立即以状态 1 退出并且没有错误消息。
所以我的具体问题是:我现在如何连接到这个远程 pdb?
一般相关的问题是:对于在 Heroku 上运行的应用程序进行这种交互式调试,这是否是正确的方法?有没有更好的办法?
注意 RE CELERY:注意,我现在也尝试了与 Celery 类似的方法,但无济于事。celery 的默认主机 rdb(远程 pdb 包装器)使用的是localhost
,当它是 Heroku 时您无法访问。我尝试将CELERY_RDB_HOST
环境变量用于托管在 Heroku 上的网站的域,但这会产生“无法分配请求的地址”错误。所以这是同样的基本问题——如何连接到在 Heroku 上运行的远程 pdb 实例?