首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用VSCode调试器调试Gunicorn工作进程?

如何使用VSCode调试器调试Gunicorn工作进程?
EN

Stack Overflow用户
提问于 2016-10-04 00:25:00
回答 4查看 10.6K关注 0票数 8

我在Ubuntu14.04上用Python3.4编写了一个GUnicorn/Falcon web服务。我想使用VSCode调试器来调试这个服务。当前,我使用命令启动进程。

代码语言:javascript
复制
/usr/local/bin/gunicorn --config /webapps/connects/routerservice_config.py routerservice:api

它使用配置文件routerservice.py启动routerservice_config.py。我已经将配置中的工作人员设置为1,以保持简单。

我已经将Python扩展安装到VSCode,所以我有了Python调试工具。因此,如何附加到GUnicorn辅助进程或让VSCode运行启动命令和自动附加。

谢谢,格雷格

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-10-04 09:03:04

我是“扩展”的作者。您可以尝试以下方法:https://github.com/DonJayamanne/pythonVSCode/wiki/Debugging:-Remote-Debuging

  • 将以下代码添加到routerservice_config.py (或类似的python启动文件) import ptvsd ptvsd.enable_attach("my_secret", address = ('0.0.0.0', 3000))
  • 启动上面的应用程序
  • 进入VS代码,然后附加调试器

FYI:

  • 这要求您在应用程序中包含ptvsd包并对其进行配置。
  • 计划是在将来(希望不久的将来)将调试器附加到任何python进程中。
票数 5
EN

Stack Overflow用户

发布于 2020-03-09 21:57:29

这个launch.json设置在VScode 1.43上适用于我:

代码语言:javascript
复制
{
    "name": "Python: Webapp",
    "type": "python",
    "request": "launch",
    "program": "/home/me/.virtualenvs/my-venv/bin/gunicorn",
    "gevent": true,
    "args": ["main:app", "--bind=127.0.0.1:8080", "--reload", "--worker-class", "eventlet", "-w", "1", "--timeout=7200"],
    "postDebugTask": "killdebugger"
}

使用此设置,我必须在停止调试器后创建一个任务来终止python进程。这只是因为按下“停止”按钮只会关闭调试器本身,而Python进程将继续运行。如果您面临相同的情况,请按F1创建一个任务,搜索任务并单击“配置任务”。然后将以下命令添加到tasks.json中:

代码语言:javascript
复制
{
    "label": "killdebugger",
    "type": "shell",
    "command": "lsof -t -i tcp:8080 | xargs kill -9"
}

如果没有此问题,请从"postDebugTask": "killdebugger"中删除launch.json设置

票数 16
EN

Stack Overflow用户

发布于 2021-11-12 15:01:34

在这里,您会发现我的.VScode/unch.json设置在Windows 10/VScode 1.60.0上为我工作,主要本地化在app/main.py中:

代码语言:javascript
复制
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python : app.main",
            "cwd": "${workspaceFolder}",
            "type": "python",
            "request": "launch",
            "program": "app/venv/fastapi/Scripts/uvicorn.exe",
            "args": ["app.main:app", "--host=127.0.0.1", "--port=8000", "--reload", "--log-level=error" ],
            "console": "integratedTerminal",
            "postDebugTask": "killdebugger"
        }
    ]
}

和correponding . .vscode/tasks.json在调试退出时杀死服务器:

代码语言:javascript
复制
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "killdebugger",
            "type": "shell",
            "command": "netstat -nao | grep \"8000\"|awk '{ print $5 }'| xargs kill -9"
        }
    ]
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39842422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档