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

Django项目执行makemigrations等命令时终端卡死无响应

Django命令卡死排查方案(针对makemigrations/createsuperuser/flush失效但generateschema正常的情况)
  • 排查数据库连接问题
    卡死大概率是阻塞在IO操作,先检查settings.py里的DATABASES配置,确认数据库服务正常运行,端口、用户名密码无误。手动用数据库客户端(比如psql、mysql命令行)连接项目配置的数据库,看能不能正常访问。如果能连上,再查是否有未提交的事务或锁表:PostgreSQL用SELECT * FROM pg_locks WHERE NOT granted;,MySQL用SHOW ENGINE INNODB STATUS;排查锁资源。

  • 检查App的信号或模型初始化代码
    makemigrations、createsuperuser这类命令会触发模型加载和信号执行,如果某个App的models.py里有模块级别的耗时操作(比如远程API调用、无限循环),或者信号(post_save、pre_save等)里有阻塞逻辑,会导致命令启动时卡死。可以临时注释掉部分INSTALLED_APPS,逐个排查是哪个App出的问题,找到后重点检查该App的models.py、signals.py里的非函数内初始化代码。

  • 排查第三方依赖冲突或版本问题
    回忆最近是否安装/更新过第三方包,有些包可能和当前Django版本不兼容,或者在命令执行时触发了阻塞逻辑。可以新建虚拟环境,只安装项目requirements.txt里的包,测试命令是否正常。如果正常,逐个添加最近更新的包来定位问题。

  • 检查Django配置文件的异常逻辑
    查看settings.py里是否有模块级别的执行代码(比如读取外部配置、启动线程、连接外部服务),这些代码可能在命令启动时阻塞。可以临时简化settings.py,只保留基础配置(INSTALLED_APPS、DATABASES、SECRET_KEY等),测试命令是否正常,再逐步加回配置排查。

  • 查看系统资源占用
    命令卡死时,用top或htop查看CPU、内存占用,看是否有进程占用过高资源导致无响应。同时检查磁盘空间是否充足,磁盘满了也会导致命令阻塞。

  • 启用Django调试日志定位阻塞点
    在settings.py里添加DEBUG级别的日志配置,执行卡死的命令,看日志输出到哪一步停止,定位具体阻塞位置。示例配置:

    LOGGING = {
        'version': 1,
        'disable_existing_loggers': False,
        'handlers': {
            'console': {
                'class': 'logging.StreamHandler',
            },
        },
        'root': {
            'handlers': ['console'],
            'level': 'DEBUG',
        },
    }
    

内容的提问来源于stack exchange,提问作者Binary_Beast

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 17:57:19