刚开始使用 Visual Studio 代码进行 python 开发,到目前为止我很喜欢它。我在 docker 上运行的 django 应用程序中进行远程调试时遇到问题。希望有人能指出我正确的方向,通过 docker 在 django 中设置 VS 调试。
我在 docker 容器中运行 Django rest 框架。由于 websocket 连接,我正在使用 asgi 服务器 daphne。我想知道是否有一种方法可以在 django 中与 daphne 工作人员一起在 docker 中使用远程调试。
我看过一些教程,但它们是针对 wsgi 部分的。我遇到的问题是 daphne 使用工作人员连接到 daphne 服务器并以这种方式处理请求。
我尝试过的事情:
可以用来
pdb
调试。必须连接到工作容器并指定stdin_open: true
andtty: true
。它有效,但是是一个乏味的过程。尝试了指定的教程 URL 中涉及的步骤,但它不适用于 Visual Studio Code。
还尝试在 pycharm 中使用远程调试,但后台骨架进程使我的计算机非常慢。但我能够让它发挥作用。希望我可以在 Visual Studio Code 中做同样的事情。
这是我的 docker-compose.yml 的 daphne 和 daphne worker 设置
#-- Daphne Webserver
web:
build:
context: .
dockerfile: Dockerfile
hostname: web
command: daphne -b 0.0.0.0 -p 8001 datuhweb.asgi:channel_layer --access-log=logs/daphne.access.log
environment:
- ENV: 'LOCAL'
expose:
- "8001"
volumes:
- .:/app
#-- Daphne worker
daphne_worker:
build:
context: .
dockerfile: Dockerfile
hostname: daphne_worker
environment:
- ENV: 'LOCAL'
volumes:
- .:/app
command: python -u manage.py runworker -v2
stdin_open: true
tty: true
我收到连接错误。这是我对 Visual Studio 代码的设置
{
"name": "Attach (Remote Debug)",
"type": "python",
"request": "attach",
"localRoot": "/app/",
"remoteRoot": "/app/",
"port": 3500,
"secret": "my_secret",
"host": "172.18.0.8"
}
这给了我一个连接错误。