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

部署Django项目到Heroku时consumers.py导入模型触发AppRegistryNotReady错误如何解决

解决方案

问题核心是Django应用注册完成前就提前触发了模型加载逻辑,调整以下配置即可修复:

1. 修正asgi.py的导入顺序

必须先完成Django初始化,再导入依赖应用配置的模块,修改后代码如下:

import os
import django

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'spotgame.settings')
django.setup()

# 所有依赖Django运行环境的导入必须放在django.setup()之后
from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
from django.core.asgi import get_asgi_application
import spotifymusicgame.routing

application = ProtocolTypeRouter({
  "http": get_asgi_application(),
  "websocket": AuthMiddlewareStack(
        URLRouter(
            spotifymusicgame.routing.websocket_urlpatterns
        )
    ),
})

2. 修正settings.py的ASGI入口配置

你当前配置的ASGI入口指向错误,修改为实际的asgi文件路径:

ASGI_APPLICATION = "spotgame.asgi.application"

3. 可选优化(避免同类问题复发)

将consumers.py中的模型导入改为方法内延迟导入,删除顶层的from .models import roomInfo,修改max_users方法如下:

@database_sync_to_async
def max_users(self):
    from .models import roomInfo
    max_user = roomInfo.objects.get(id=1).max_player
    return max_user

修改完成后重新提交代码部署到Heroku即可正常运行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:54:07