AppEngineで動かしてるDjangoアプリをStackdriver Debuggerでデバッグする手順について。
Python 用 Stackdriver Debugger の設定 | Stackdriver Debugger のドキュメント | Google Cloud
ドキュメントには、Django 1.Xの話しかなく、手順も良くなかったのでメモを残します(フィードバックはしておきました)。
Python 3.7、Django 2.1.4、AppEngineはStandard、Flexible両方で試しました。
requirements.txtへの追記
インストールするライブラリは、ドキュメント通り google-python-cloud-debugger
で大丈夫でした。
requirements.txt
に google-python-cloud-debugger
をインストールするように追記しておきます。
google-python-cloud-debugger
Djangoの設定
DjangoアプリをAppEngineで動かす場合、エントリポイントは wsgi.py
になります(gunicorn等でwsgi.pyを読み込ませてる場合)。
mysite
という名前でプロジェクトを作った場合、 mysite/wsgi.py
にStackdriver Debuggerを有効にするコードを追記します。
import os from django.core.wsgi import get_wsgi_application os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings') application = get_wsgi_application() # Enable Stackdriver Debugger(以下が追記部分) try: import googleclouddebugger googleclouddebugger.enable() except ImportError: pass
デバッグしてみる
変更したものをAppEngineにデプロイ後、GCPのコンソールからStackdriverデバッグの画面を開いてみます。
ソースコードが表示されない場合は、デプロイ時のコマンドを gcloud beta app deploy
(betaコマンド)にしてみると改善するかもしれません。
ソースコードが表示されたら、デバッグしたい行にスナップショットのポイントや条件、式を指定し、実際にブラウザでアプリケーションを操作します。
指定したスナップショットのポイントを通過すると、デバッグの画面で、変数やコールスタックなどを確認できます。
本番環境を気軽にデバッグできるので便利ですね。