[求助] Python在Windows下使用Django开发时运行命令执行完后无法结束进程
在windows下用django进行开发的时候,进入虚拟环境后执命令,例如:python manage.py后,命令已经执行完了,但是无法结束退出,Ctrl+c也没用,或者有时候报错完了,但光标还是一直在闪烁等待,没办法进一步操作,同样无法ctrl+c退出,只能将cmd关闭。
不知道问题表述清楚没有,没说清楚的我会继续补充,希望有人知道问题所在的能告诉我,谢谢!
[求助] Python在Windows下使用Django开发时运行命令执行完后无法结束进程
1 回复
这个问题我遇到过,一般是Django的开发服务器没有正常关闭导致的。
最直接的方法是按 Ctrl+C 强制终止进程。如果控制台窗口已经关闭,但进程还在后台运行,可以这样处理:
1. 查找并结束进程(命令行方式):
# 查找所有python进程
tasklist | findstr python
# 或者直接结束所有python进程(强制)
taskkill /F /IM python.exe
2. 使用Python代码确保进程正确退出:
# 在manage.py同级目录创建stop_server.py
import os
import signal
import subprocess
import sys
def stop_django_server():
# 查找占用8000端口的进程(默认Django端口)
try:
result = subprocess.run(
['netstat', '-ano', '|', 'findstr', ':8000'],
capture_output=True,
text=True,
shell=True
)
if result.stdout:
lines = result.stdout.strip().split('\n')
for line in lines:
if 'LISTENING' in line:
pid = line.strip().split()[-1]
os.kill(int(pid), signal.SIGTERM)
print(f"已终止进程 PID: {pid}")
return True
except Exception as e:
print(f"错误: {e}")
print("未找到运行中的Django服务器")
return False
if __name__ == "__main__":
stop_django_server()
3. 预防措施 - 使用更好的启动方式:
# 使用subprocess启动,便于管理
import subprocess
import time
def start_server():
"""启动Django服务器并返回进程对象"""
proc = subprocess.Popen(
['python', 'manage.py', 'runserver'],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
return proc
# 使用时
server = start_server()
# 需要停止时
server.terminate() # 优雅停止
server.wait() # 等待进程结束
4. 如果经常遇到这个问题,建议:
- 检查是否有代码在
__del__或析构函数中创建了死循环 - 确保没有未关闭的数据库连接或文件句柄
- 考虑使用
python manage.py runserver --noreload排除自动重载的影响
我一般用第一个方法,简单直接。

