我正在尝试调试在 Google Appengine 灵活环境上运行的 Flask/Python 应用程序。
但是,我在 Google 控制台的 Stackdriver 调试界面中看到一条警告消息,并且无法设置任何断点。
警告内容如下:
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)
应用程序.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 导入错误,但还没有解决整体问题。