aws上的Django频道:daphne和工人在运行,但websocket taret不健康

2024-06-26 00:15:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在关注这篇文章-https://blog.mangoforbreakfast.com/2017/02/13/django-channels-on-aws-elastic-beanstalk-using-an-alb/

为了让我的django channels应用在aws上工作,但是只有非websockets请求得到处理。

我的通道层设置是:

   CHANNEL_LAYERS = {
"default": {
    "BACKEND": "asgi_redis.RedisChannelLayer",
    "CONFIG": {
        "hosts": [os.environ.get('REDIS_URL', 'redis://localhost:6379')],
    },
    "ROUTING": "malang.routing.channel_routing",
 },
}

正如文章中提到的,我有两个目标群体。一条转发路径/到端口80和/ws/*到5000。

我的监督人.conf是-

^{pr2}$

当我检查aws日志上supervisorctl状态的结果时,它显示它们运行良好。但我还是得到了404的响应。

如果你想知道更多的信息,请帮助我。。


Tags: djangohttpscomredisawsanonblog
2条回答

项目在本地运行吗?如果没有,问题出在软件上。如果是这样的话,问题出在你的部署上。我将检查安全组/防火墙/ELB配置,以确保可以访问正确的端口。在

在每个实例上本地运行Redis后端是没有意义的,前提是您实际部署了它,但您没有提供您的信息。 Redis是一个缓存系统,允许通过不同的实例共享数据。从架构的角度看,更接近于一个简单的守护线程。 您应该使用外部Redis缓存,并在Django conf上引用它

CHANNEL_LAYERS = {
"default": {
    "BACKEND": "asgi_redis.RedisChannelLayer",
    "ROUTING": "<YOUR_APP>.routing.application",
    "CONFIG": {
        "hosts": ["redis://"+REDIS_URL+":6379"],
    },
},

}

请参见AWS ElasticCache服务。在

相关问题 更多 >