问题标签 [django-channels]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1171 浏览

python - Django settings.py 没有更新

我已启用设置:

USE_X_FORWARDED_HOST = True

在我的 settings.py 中。我目前正在部署服务器,但是当我尝试呈现我的索引页面时,它给了我一个 404。电子邮件说它是:

Invalid HTTP_HOST header: u'127.0.0.1:9001

在任何人说我需要将它添加到我的 ALLOWED_HOSTS 之前,我已经有了,所以请不要让我远离那个建议。我还收到了一封包含调试错误的电子邮件。当我查看调试信息时,它有一个我的设置列表,并指出:

另一个未更新的字段是我的 ALLOWED_HOSTS。我尝试重新启动 apache2,触摸 wsgi.py,并在包含 settings.pyc 的主应用程序目录中删除 *.pyc。然而,这些都没有奏效。

我的部署的一些背景。我在代理后面有我的 django,因为我使用 django 频道和 apache2 网络服务器作为代理。我还有 daphne 在它后面运行,它接收请求并为它们提供服务。

0 投票
2 回答
4437 浏览

nginx - 带有 nginx 的 Django 频道没有客户端收到消息

我们有一个使用频道包的应用程序,并且工作得很好......在本地主机上。一旦我们点击 staging 并nginx在 Django 前面放置一个框(使用 SSL),我们就可以连接到套接字,但客户端没有收到任何消息。

Nginx 配置:

Django 使用 gunicorn 运行,对于 websockets,我升级了一个 daphne 服务器。我可以在 daphne 日志中看到我的客户端正在连接,但仍然没有收到从 daphne 到客户端的消息。

Daphne 正在创建一个 nginx 用来通信的 unix 套接字: daphne main.asgi:channel_layer -u /tmp/daphne.sock

0 投票
1 回答
2012 浏览

python - channels.asgi.InvalidChannelLayerError:没有为默认指定 BACKEND

我正在尝试将频道用于 django 应用程序。我已经安装了所有必需的依赖项(我认为)。我已经在 myapp/settings.py 的 INSTALLED_APPS 上列出了“频道”。但是,我运行 daphne ( daphne chat.asgi:channel_layer --port 8888)-(cmd 上没有错误消息),然后当我运行时python manage.py runworker,它会给出一条错误消息,上面写着 - “channels.asgi.InvalidChannelLayerError:没有为默认指定 BACKEND”。. 我是 django 的新手,我有 asgi.py 作为

但是在我的 myapp/settings.py 中,我已经指定了默认的 BACKEND。你能建议一个解决这个错误的方法吗?是一个可能的解决方案,但 asgi_redis 在我的 django1.10 中是最新的。我正在尝试在我的本地机器上运行 myapp。

0 投票
0 回答
757 浏览

python - 如何检查消息是否在 django-channels 中失败

我在我的项目中使用通道,这使得 django 使用 websockets 非常容易设置和使用。

在我的应用程序中,每个登录的用户都会打开一个组,如果有任何活动,我们可以向该组发送信息。

因此,每当我想向该用户发送消息时,我都会使用

但是,如果有任何错误,这会静默失败。所以问题是有没有办法检查它是否失败,或者是否有任何方法可以检查组是否存在(实时或监听),甚至在我发送数据以便更好地处理它之前。

0 投票
0 回答
1315 浏览

python - 在 AWS Elastic Beanstalk 上使用 Django 通道设置 WebSocket

我正在尝试在 AWS 实例上设置 WebSocket。由于我将 Django 用于我的 webapp,因此我使用Django Channels来支持 WebSocket 。我使用 AWS Elastic Beanstalk 部署了应用程序,但出现错误:

WebSocket 连接到“ws://xxx.elasticbeanstalk.com/”失败:WebSocket 握手期间出错:意外响应代码:200。

经过一番研究,我发现我需要在端口 80 上设置 TCP 并在 443 上设置 SSL 而不是 HTTP 和 HTTPS,我这样做了,但没有改变,我仍然得到错误。我还禁用了跨多个可用区的负载平衡,但没有成功。

我不知道 EB 配置文件是否有问题,因为我只WSGIPath设置而不是 Daphine 和 Channels 使用的 ASGI。没有ASGIPath标签可以尝试这个。

我找到了一篇关于新Application Load Balancer的文章,但由于它是一项相当新的服务,所以我无法找到任何关于 Django 的 WebSockets 的内容。Django Channels 也是新的,所以关于它的问题和帖子也不多。

0 投票
0 回答
190 浏览

python - 如何在另一个(导入的)中间件类的方法中调用和定义变量?

我正在 django1.10 上进行一个宠物项目,尝试使用频道。我有一个中间件,我想将它导入并挂接到 myapp。我希望中间件中的 'ip'、'user_agent'、'session_key' 参数挂接到我的频道/sessions.py。由于我仍在掌握 python 和 django,我感谢任何有关如何将我的中间件类 SessionMiddleware 连接到我的通道/sessions.py 的帮助。

中间件的相关代码是:

通道/sessions.py 是:

这个问题可能很简单,需要了解基本的 python 类/函数导入。我能够导入模块和类 SessionMiddleware;我尝试将“ip”、“user_agent”和“session_key”定义为通道中的全局变量/ session.py(可能因为我收到错误而遗漏了一些东西):

NameError:name 'user_agent' 未定义。

` 当我尝试在#Make a session storage in channels/sessions.py 中的 if 语句中分配“会话”时:

会话 =session_engine.SessionStore(session_key=session_key,user_agent=user_agent,ip=ip)

我很难理解以下内容: 1. 将“ip”、“user_agent”和“session_key”参数调用到我的频道/sessions.py 的 Pythonic 方式是什么。2. 如何使这些参数在channels/sessions.py 中具有全局范围。

0 投票
0 回答
813 浏览

python - django 频道路由错误

我正在使用 django-channels 进行聊天应用程序,但我遇到了奇怪的路由错误。

所以这是我的routing.py

然后我想按照 /chatwindow 链接使用普通视图并卸载聊天应用程序,但它不起作用。

0 投票
2 回答
12399 浏览

python - 如何从 Django Channels Web 套接字数据包中获取当前用户?

我正在关注本教程:最后,实时 Django 来了:开始使用 Django 频道

我想通过使用 Django User 对象而不是handle变量来扩展应用程序。但是如何从ws_recieve(message)函数中接收到的 WebSocket 数据包中获取当前用户?

我注意到来自网络套接字数据包csrftoken的前十位数字都sessionid与正常的 HTTP 请求相匹配。我可以使用此信息获取当前用户吗?

作为参考,收到的数据包如下所示:

0 投票
0 回答
99 浏览

django - heroku 上带有 django 频道的新文物

有人可以向我解释如何在 Heroku 上运行的 django-channels 示例项目中添加新的遗物吗?

0 投票
1 回答
171 浏览

django - Django Channels HttpClient 测试错误

我一直在尝试为频道的多聊天示例项目中的一位消费者创建测试:https ://github.com/andrewgodwin/channels-examples/tree/master/multichat 。消费者函数如下所示:

现在,我一直遇到的有趣错误是这样的。在我的测试功能版本 1 中:

测试给了我以下错误:

测试功能版本 2:

测试现在可以成功地将消息路由到正确的消费者,但由于用户身份验证而无法继续:

我的问题是:

1) 为什么调用HttpClient.sendHttpClient.consume分别产生与调用不同的行为HttpClient.send_and_consume。我查看了 send_and_consume 函数,它只是像我做的那样分别调用发送和消费。

2)我怎样才能让它工作,这样我就不会得到用户登录错误?