Python中如何在Windows下调试sanic应用
null
Python中如何在Windows下调试sanic应用
6 回复
在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调试(推荐)
- 安装Python扩展
- 创建
.vscode/launch.json:
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Sanic",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}/app.py",
"console": "integratedTerminal",
"justMyCode": false
}
]
}
- 按F5启动调试,可以设置断点、查看变量。
方法三:使用PyCharm调试
- 创建Python运行配置,选择你的app.py
- 勾选“Gevent compatible”选项(Sanic基于asyncio,但某些版本需要这个)
- 直接点击调试按钮即可。
方法四:使用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
代码跑虚拟机里或者 WSL


