14

Heroku では見られるがローカル マシンでは見られないバグをデバッグするために、ステップスルー デバッグを実行しようとしています。

アプリに接続されたコンソールにアクセスできないため、典型的なimport pdb; pdb.set_trace()アプローチは Heroku では機能しませんが、pdb の「リモート」バージョンであるrpdbを使用できるようです。

import rpdb; rpdb.set_trace()そこで、適切な場所に追加された rpdb をインストールしました。rpdb 行にヒットするリクエストを行うと、アプリが期待どおりにハングし、heroku ログに次のように表示されます。

pdb is running on 3d0c9fdd-c18a-4cc2-8466-da6671a72cbc:4444

では、実行中の pdb に接続するにはどうすればよいでしょうか。heroku のシステム内から名前付きホストに接続しようとしましheroku run nc 3d0c9fdd-c18a-4cc2-8466-da6671a72cbc 4444たが、ステータス 1 ですぐに終了し、エラー メッセージは表示されません。

したがって、私の具体的な質問は次のとおりです。このリモート pdb に接続するにはどうすればよいですか?

関連する一般的な質問は、Heroku で実行されているアプリのこの種のインタラクティブなデバッグに、これは正しい方法でしょうか? より良い方法はありますか?

NOTE RE CELERY: 注、私は今、Celery で同様のアプローチを試みましたが、役に立ちませんでした。デフォルトのホスト celery の rdb (リモート pdb ラッパー) は を使用しますがlocalhost、Heroku の場合はアクセスできません。Heroku でホストされている Web サイトのドメインに環境変数を使用しようとしましたCELERY_RDB_HOSTが、「要求されたアドレスを割り当てることができません」というエラーが表示されます。つまり、同じ基本的な問題です。Heroku で実行されているリモート pdb インスタンスに接続する方法は?

4

1 に答える 1