デバッグ—Pythonドキュメント
デバッグ
タスクをリモートでデバッグする(pdbを使用)
基本
celery.contrib.rdb
は、pdb
の拡張バージョンであり、端末にアクセスできないプロセスのリモートデバッグを可能にします。
使用例:
set_trace()
は、現在の場所にブレークポイントを設定し、タスクをリモートでデバッグするためにtelnetで接続できるソケットを作成します。
デバッガーは複数のプロセスによって同時に起動される可能性があるため、固定ポートを使用するのではなく、デバッガーはベースポート(デフォルトでは6900)から開始して使用可能なポートを検索します。 ベースポートは、環境変数 CELERY_RDB_PORT
を使用して変更できます。
デフォルトでは、デバッガーはローカルホストからのみ使用できます。外部からのアクセスを有効にするには、環境変数 CELERY_RDB_HOST
を設定する必要があります。
ワーカーがブレークポイントに遭遇すると、次の情報がログに記録されます。
指定されたポートにTelnetで接続すると、 pdb シェルが表示されます。
help
と入力して、使用可能なコマンドのリストを取得します。これまで pdb を使用したことがない場合は、 Pythonデバッガーマニュアルを読むことをお勧めします。
実例を示すために、result
変数の値を読み取り、それを変更して、タスクの実行を続行します。
私たちの破壊行為の結果は、労働者のログで見ることができます:
チップ
ブレークポイント信号の有効化
環境変数 CELERY_RDBSIG
が設定されている場合、ワーカーは SIGUSR2 シグナルが送信されるたびにrdbインスタンスを開きます。 これは、メインプロセスとワーカープロセスの両方に当てはまります。
たとえば、次のコマンドでワーカーを開始します。
以下を実行することにより、任意のワーカープロセスのrdbセッションを開始できます。