You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell脚本捕获CTRL-C:让Django服务停止后脚本继续执行

PowerShell中捕获CTRL-C并让脚本继续执行的解决方案

完全可行,PowerShell默认会在按下CTRL-C时终止整个脚本,但通过try/finally代码块可以实现捕获中断、安全停止服务器后继续执行后续步骤的效果,和Bash的行为对齐。

具体实现思路:

  • 将启动Django服务器的命令放在try块中,当按下CTRL-C触发终止错误时,脚本会自动跳转到finally块
  • 把退出虚拟环境、返回上级目录这类收尾操作统一放在finally块里,无论服务器是正常退出还是被中断,finally块的代码都会执行

示例脚本片段:

# 前置步骤:创建venv、激活环境、安装依赖、执行迁移
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
python manage.py migrate

try {
    # 启动Django开发服务器
    python manage.py runserver
}
finally {
    # 收尾操作:退出虚拟环境、返回上级目录
    Write-Host "正在清理环境..."
    deactivate
    Set-Location ..
    Write-Host "操作完成"
}

需要注意的细节:

  • PowerShell的finally块会在任何情况下执行,包括脚本被CTRL-C中断的场景,这是实现需求的核心
  • 如果脚本中有其他可能抛出错误的操作,也可以将其纳入try块单独处理,但针对CTRL-C中断服务器的场景,上述写法已足够覆盖

内容的提问来源于stack exchange,提问作者Marco Frag Delle Monache

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 17:32:13