Python中如何在Windows下调试sanic应用

null
Python中如何在Windows下调试sanic应用

6 回复

uvloop 不支持 Windows,你如果非得 Windows 就用 Ubuntu on Windows 吧


在Windows下调试Sanic应用,最直接的方法是使用--debug模式启动,并配合--auto-reload启用热重载。不过,更专业的做法是使用IDE的调试器。

方法一:使用命令行参数(快速调试)

# app.py
from sanic import Sanic
from sanic.response import text

app = Sanic("MyApp")

@app.route("/")
async def test(request):
    return text("Hello World")

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000, debug=True, auto_reload=True)

运行:python app.py 这样会在代码修改时自动重启,并在出错时显示详细堆栈。

方法二:使用VS Code调试(推荐)

  1. 安装Python扩展
  2. 创建.vscode/launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Sanic",
            "type": "python",
            "request": "launch",
            "program": "${workspaceFolder}/app.py",
            "console": "integratedTerminal",
            "justMyCode": false
        }
    ]
}
  1. 按F5启动调试,可以设置断点、查看变量。

方法三:使用PyCharm调试

  1. 创建Python运行配置,选择你的app.py
  2. 勾选“Gevent compatible”选项(Sanic基于asyncio,但某些版本需要这个)
  3. 直接点击调试按钮即可。

方法四:使用pdb(命令行调试) 在代码中插入:

import pdb; pdb.set_trace()

运行时会进入交互式调试。

Windows上注意:如果遇到asyncio相关错误,可能需要设置事件循环策略:

import asyncio
import sys

if sys.platform == "win32":
    asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())

总结:用VS Code或PyCharm的图形化调试器最省事。

uvloop 不是兼容 asyncio 的么,那为什么 sanic 不能在 windows 下用默认的 asyncio loop 呢

你改一下 sanic 的代码就可以了

代码跑虚拟机里或者 WSL

回到顶部