Django Websockets 的问题

问题描述 投票:0回答:1

我按照 Django Websockets 教程创建了一个聊天室网站。它不起作用,所以我仔细检查了代码,并且按照教程中的说明进行了所有操作。我决定克隆存储库并检查我的代码有什么问题。我意识到 websockets 也不适用于下载的项目。是代码有问题还是我的电脑有问题?

教程链接:https://www.youtube.com/watch?v=jsxFEONN_yo

存储库链接:https://github.com/veryacademy/YT-Django-Project-Chatroom-Getting-Started.git

我创建了一个虚拟环境并安装了 django 和频道。我所做的唯一更改是在我替换的 settings.py 文件中

CHANNEL_LAYERS = {
    'default': {
        'BACKEND': 'channels_redis.core.RedisChannelLayer',
        'CONFIG': {
            "hosts": [os.environ['REDIS_URL']],
        },
    },
}

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": os.environ['REDIS_URL'],
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient"
        }
    }
}

与:

CHANNEL_LAYERS = {
    "default": {
        "BACKEND": "channels.layers.InMemoryChannelLayer"
    }
}
python django deployment backend django-channels
1个回答
0
投票

你需要redis。请检查下面的文档。

https://channels.readthedocs.io/en/latest/topics/channel_layers.html

内存通道层将每个进程作为单独的层进行操作。这意味着不可能进行跨进程消息传递。由于通道层的核心价值是提供分布式消息传递,因此内存使用将导致性能次优,并最终在多实例环境中导致数据丢失。

这意味着您不能使用内存中来跨进程消息传递,我猜您正在遵循该教程!

© www.soinside.com 2019 - 2024. All rights reserved.