我按照 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"
}
}
你需要redis。请检查下面的文档。
https://channels.readthedocs.io/en/latest/topics/channel_layers.html
内存通道层将每个进程作为单独的层进行操作。这意味着不可能进行跨进程消息传递。由于通道层的核心价值是提供分布式消息传递,因此内存使用将导致性能次优,并最终在多实例环境中导致数据丢失。
这意味着您不能使用内存中来跨进程消息传递,我猜您正在遵循该教程!