Google Appengine フレキシブル環境で実行されている Flask/Python アプリをデバッグしようとしています。
しかし、Google コンソールの Stackdriver Debug インターフェースに警告メッセージが表示され、ブレークポイントを設定できません。
警告は次のとおりです。
Stackdriver Debugger が GAE Flex の Python ランタイム用に設定されていません
私が間違っていることについて何か考えはありますか?
私は:
- Stackdriver Debugger API を有効にしました(こちらに記載)
- デバッガーをインポートして初期化しました (こちらの手順に従います)
- requirements.txt に google-python-cloud-debugger を含めました
main.py (app.yaml で定義されたアプリ エントリ ポイント)
from werkzeug.serving import run_simple
from werkzeug.wsgi import DispatcherMiddleware
from wsgi import api, frontend, manage
try:
import googleclouddebugger
googleclouddebugger.AttachDebugger()
except ImportError:
pass
app = DispatcherMiddleware(frontend.create_app(), {
'/api': api.create_app(),
'/manage': manage.create_app()
})
if __name__ == '__main__':
run_simple('0.0.0.0', 5000, app, use_reloader=True, use_debugger=True)
app.yaml
runtime: python
env: flex
entrypoint: gunicorn -b :$PORT main:app
runtime_config:
python_version: 2
manual_scaling:
instances: 1
resources:
cpu: 1
memory_gb: 0.5
disk_size_gb: 10
env_variables:
SQLALCHEMY_DATABASE_URI: "postgresql+psycopg2://myusername:mypassword!@/instancename?host=/cloudsql/instancename"
beta_settings:
cloud_sql_instances: "instancename"
更新 1
コメントの後、urllib のインポート エラーに気付き、アプリケーションの wsgi の性質が問題を引き起こしているのではないかと考えました。ドキュメントに戻り、Django フレームワークが同様のことを行っていることについてのメモを見て、次のように変更しました。
googleclouddebugger.AttachDebugger()
に
googleclouddebugger.enable()
これにより、urllib のインポート エラーは解消されましたが、全体的な問題は解決していません。