我已经将我的 django webapp 部署到我的 heroku 服务器并且它工作正常,直到我添加了一个 websocket 连接,该连接在创建模型对象后立即在单独的 url 中显示该模型对象的内容。为此,我使用了 Django channel 和托管在 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 服务器,而我无法运行它。任何帮助将不胜感激!
最佳答案
当您在 settings.py 文件的 INSTALLED_APPS 中添加一个应用程序但您的计算机上没有安装该应用程序时,可能会发生此错误。你有两个解决方案:
如果您不在您可能为项目创建的虚拟环境中,也可能会出现此错误。
当您运行 python manage.py runserver 等命令时,django 会使用 DJANGO_SETTINGS_MODULE 环境变量自动为您运行 django.setup。所以 views.py 中的代码可以访问模型,因为 django 确保在导入 View 之前调用 django.setup。由于您将 shell 脚本作为简单的 python 文件运行,因此您必须手动调用 django.setup。
关于django - 如何解决“"django.core.exceptions.AppRegistryNotReady: Apps aren' t 已加载”的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57010249/
相关文章:
wordpress - 如何优化WP_Query(包括CPT和ACF)
jenkins - BlueOcean编辑器 "scm"输入什么
angular - Ionic 4 - 在平台硬件后退按钮 android 上关闭或关闭模态
c# - 502 Bad Gateway nginx/1.14.1 elasticbeanstalk
java - 在非 View 或非 ViewModel 类中观察 LiveData
ios - 如果先前已加载某些网页,WKWebView 不会加载 .archive 文件