在线使用django的Redis后端

Redis backend in online using django

我已经创建了聊天应用程序,在离线状态下它工作正常,但是当我在线部署它时我收到这个错误

注意:我已经安装好了redis,这是我的settings.py 这是 production.py 这是我的另一个 settings.py

CHANNEL_LAYERS = {
    "default": {
        "BACKEND": "channels_redis.core.RedisChannelLayer",
        "CONFIG": {
            "hosts": [os.environ.get('REDIS_URL', 'redis://localhost:6379')],
        },
        # "symmetric_encryption_keys": [SECRET_KEY],
    },
}

这是我的 settings.py

CHANNEL_LAYERS = {
    "default": {
        "BACKEND": "channels_redis.core.RedisChannelLayer",
        "CONFIG": {
            "hosts": [("127.0.0.1", 6379)],
        },
    },
}

注意 我的网站上线了

这是我的参考资料https://github.com/codingforentrepreneurs/ChatXChannels

更新

当我 运行 ubuntu

$redis 服务器

$ ps 辅助 | grep redis 服务器

我仍然遇到这个错误

这听起来像是您之前存在的 Django 服务器正在处理您的请求,而不是接受请求的通道。

我认为您的问题在于您如何 运行在生产环境中安装您的服务器。

当运行生产频道时,您有 2 个选择。

1) 运行 通过通道的所有请求(甚至那些由您的普通 Django 视图处理的请求)

2) 运行 您的普通服务器实例和您的频道服务器实例(在不同的本地端口上),在它们前面有一些 path based reverse proxy(例如 Nginx)将请求路由到各自的本地端口。

无论您select选择什么选项,您都应该运行使用本指南https://channels.readthedocs.io/en/latest/deploying.html#run-protocol-servers(而不是python manager.py)在生产中使用频道。

如果你 select 选项 1) 那么请记住,当你 运行 时,你需要它 运行 在与你的旧 Django 服务器用于 [=35] 相同的端口配置上=].

如果您选择选项 2),您应该确保所有流量首先到达您的反向代理 (Nginx) 服务器。然后你可以 运行 Daphne 在不同的端口上,并在 Nginx 中设置路由,根据路径代理传递到相应的服务器实例。