【问题标题】:How to fix the issue "django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet"?如何解决“django.core.exceptions.AppRegistryNotReady:应用程序尚未加载”的问题?
【发布时间】:2019-07-12 15:48:16
【问题描述】:

我已经将我的 django webapp 部署到我的 heroku 服务器,它工作正常,直到我添加了一个 websocket 连接,该连接在创建模型对象后立即在单独的 url 中显示模型对象的内容。为此,我将 Django 频道与托管在 redislabs 上的 redis 服务器一起使用。为了运行 asgi 应用程序,我尝试使用 daphne 服务器,但是当我尝试使用以下命令运行 daphne 服务器时: $daphne smartResturant.asgi:channel_layer --port 8888 ,它说
“django.core.exceptions.AppRegistryNotReady:应用尚未加载”

我的 asgi.py

import os
import django
from smartResturant.routing import get_default_application


os.environ.setdefault("DJANGO_SETTINGS_MODULE", "smartResturant.settings")
django.setup()
application = get_default_application()

我的设置.py

ASGI_APPLICATION = 'smartResturant.routing.application'
CHANNEL_LAYERS = {
    'default': {
        'BACKEND': 'channels_redis.core.RedisChannelLayer',
        'CONFIG': {

            "hosts": ['redis://:xxxxxxxx@redis-13131.c85.us-east-1-2.ec2.cloud.redislabs.com:13131']     
        },

    },
}

当我在本地运行而不使用 daphne 服务器时,它工作正常。但我发现要在托管服务器上运行基于 asgi 的应用程序,您必须使用 daphne 服务器,而我无法运行它。任何帮助将不胜感激!

【问题讨论】:

  • 第一个最基本的问题,你是不是忘记在设置里加django-secret-key了?
  • 我的设置里有!
  • 在我过去的经验中,我确实遇到了循环依赖的问题,但不确定你的情况。希望更多有经验的人来帮忙。
  • 你找到解决办法了吗?

标签: django daphne asgi


【解决方案1】:

当您在 settings.py 文件的 INSTALLED_APPS 中添加应用程序但您的计算机中没有安装该应用程序时,可能会出现此错误。你有两个解决方案:

  1. 使用包管理器(如 django 中的 pip)安装该应用程序
  2. 或在 settings.py 文件中注释掉已安装的应用程序

如果您不在为项目创建的虚拟环境中,也可能出现此错误。

当您运行诸如 python manage.py runserver 之类的命令时,django 会使用 DJANGO_SETTINGS_MODULE 环境变量自动为您运行 django.setup。所以views.py中的代码可以访问模型,因为django保证django.setup在views被导入之前被调用。由于您将 shell 脚本作为简单的 python 文件运行,因此您必须手动调用 django.setup。

【讨论】:

  • 我的电脑上安装了 INSTALLED_APPS 中的所有应用程序。另外,我还没有为我的项目创建任何虚拟环境。
  • 这个错误意味着你的结果客户端没有运行,我认为你应该注意你在arrap installed_apps中的逗号。或者再次更新您的 asgi 配置并尝试。
  • 并确保您没有在应用的 init.py 文件中导入模型或类似的应用代码。
猜你喜欢
  • 1970-01-01
  • 2016-08-04
  • 2016-09-26
  • 2016-01-08
  • 2016-08-22
  • 1970-01-01
  • 1970-01-01
  • 2017-09-16
相关资源
最近更新 更多