问题标签 [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 回答
274 浏览

python - 使用 django shell 的 Django 频道

我目前正在尝试使用 Celery 发送带有 django 通道的套接字。但是我在那里发现了与使用 Django 的 shell 相同的问题,并希望有人能启发我。

我进行了设置,以便在views.py中,当用户发送POST请求时,它将调用

然后浏览器会显示警报。

但是,当我尝试使用 Django 的 shell 或 Celery 的一项任务来做同样的事情时:

它什么都不做,甚至不返回错误。

0 投票
1 回答
570 浏览

django - Django 通道调整图像大小

我有一个照片模型,有两个图像字段。一个用于原始图像,另一个用于原始图像的调整大小版本。

我选择 django-channles 的原因是因为我已经将它用于 websocket 目的,并且在文档中他们说“......而且,除此之外,应用程序可以轻松卸载许多非关键任务,直到响应已发送 - 例如将内容保存到缓存中或缩略图新上传的图像。” .

如何使用django-channels使用sorl-thumbnaildjango-imagekit或以任何其他方式调整图像的大小以具有 470px 的宽度和自动高度?

0 投票
0 回答
53 浏览

python - 终止 Django Channels 功能

我目前有一个网站,当用户单击一个按钮时,它会发送一个套接字,然后该套接字会运行一个网络抓取程序,并将结果返回给用户。

为了简单起见,假设在接收到一个套接字后,它被路由到具有以下代码的消费者.py:

但是,我还想添加一个“终止”按钮来停止此功能的运行,但不知道如何去做。我考虑过执行以下操作:

然而与此同时,这段代码似乎并不是特别优雅,所以我想知道是否有更简单的方法来做到这一点。

0 投票
6 回答
20910 浏览

django - 使用 django-channels 向单个用户发送消息

我一直在尝试django-channels,包括阅读文档和使用示例。

我希望能够向单个用户发送一条消息,该消息通过将新实例保存到数据库来触发。

我的用例是创建一个新通知(通过 celery 任务),一旦保存通知,就会将此通知发送给单个用户。

这听起来是可能的(来自django-channels 文档

...关键部分是您可以运行代码(并在通道上发送)以响应任何事件 - 包括您创建的事件。您可以在模型保存、其他传入消息或视图和表单内的代码路径上触发。

但是,进一步阅读文档并使用django-channels 示例,我不知道该怎么做。数据绑定和 liveblog 示例演示了发送到一个组,但我看不到如何只发送给单个用户。

0 投票
0 回答
1261 浏览

django - Django Channels wss未连接收到404错误

我正在尝试将我的服务器从本地子网移到域中。主要网页正在运行,我将它们放在 SSL 后面。Apache 会重写从任何 HTTP 连接到 HTTPS 的 url。但是,当我尝试从浏览器中连接 javascript 时:

我收到以下错误:

我的 settings.py 配置如下:

编辑(在 APACHE 配置数据中添加):

我的 Apache default.conf 如下(简单重写为 HTTPS):

阿帕奇安全.conf:

编辑发现apache正在接收请求但没有做任何事情 我跟踪了other_vhosts.access.log并发现当我在chrome控制台中创建一个新的websocket时,apache记录了一个GET请求,但似乎没有将它转发到我的django应用程序。

我也有一个工人在运行,一个 redis 服务器设置,并且 daphne 也在运行。如果您能想到任何可能的解决方案,请告诉我

0 投票
1 回答
1499 浏览

django - 将 Elastic Beanstalk 与 Django 通道一起使用时出现 Websocket 错误

我正在尝试让一个由 django 频道支持的聊天应用程序在带有负载均衡器的 AWS Elastic Beanstalk 上工作。

我基本上是在修改https://github.com/jacobian/channels-example中的代码以使用 Elastic Beanstalk。我可以使用命令在本地成功运行它

问题是当我使用 Elastic Beanstalk 部署它时,启动聊天应用程序时出现以下错误

我尝试了https://stackoverflow.com/a/29831723/3667089提出的解决方案,但它只是显示了不同的错误代码

我还已经将负载均衡器侦听器端口更改为 TCP 80,并获得了 SSL 证书以将安全侦听器端口更改为 SSL 443,但仍然出现相同的错误。

我还在AWS Elastic Beanstalk 上阅读了带有 socket.io 的 Websockets,但没有为 Django 配置代理服务器的选项,我认为它默认使用 Apache。

我缺少 Elastic Beanstalk 的配置以使其正常工作?

有什么办法可以改变这一点,以便我们可以使用 asgi 运行 daphne 服务器?

0 投票
1 回答
10798 浏览

python - https 后面的 django 频道

在我安装了letsencript ssl 之前,Django-channels websocket 在AWS 服务器上运行良好。我尝试了另一个证书,但 wss 无法正常工作。我看到了这个在线部署,它表明通道可以在 https 后面工作:

https://django-channels-example.herokuapp.com/

我在这里遵循了 andrewgodwin 的建议:

https://github.com/django/channels/issues/248

我将 daphne 指向 8000 端口:

我在我的 javascript 中使用了相同的端口:

我的 nginx 配置:

我的浏览器告诉我:

Firefox 无法与位于 wss://example.com:8000/chat 的服务器建立连接。

有什么建议么?谢谢。

0 投票
4 回答
8205 浏览

django - 是否可以列出存储在组中的频道?

是否可以使用 django-channels 访问添加到组中的频道列表?

编辑:

我试图实现的是访问所有频道的会话,例如连接用户列表。

到目前为止,我使用了一个基于数据库的系统来列出连接。但是如果服务器在没有执行我的 ws_disconnect 消费者的情况下关闭,这些连接对象将保留在数据库中,我不希望这样。

编辑2:

要列出已连接的用户,我发现django-channels-presence. 我会测试它。

0 投票
3 回答
2156 浏览

django - 调试 django 通道

我正在尝试将 django-channels 合并到我的下一个项目中,但我在调试时遇到了问题。我已经尝试过 pycharms 调试器和 pdb 但它没有达到断点。

0 投票
3 回答
1114 浏览

django - Django restframework,Django 频道,Ionic 2 - websocket 握手错误

我目前正在使用线程标题中提到的技术开展一个项目。

我从浏览器中运行它(应用程序托管在 heroku 上),但是当我尝试从 Ionic 2 应用程序连接到 websockets 时,我总是在建立握手时遇到错误。

现在一个想法是,这可能是一个 CORS 问题。所以我安装django-cors-middleware了希望这可以解决问题 - 好吧它没有。但我认为该应用程序根本不会向 Daphne 服务器添加任何标头。

目前我不知道问题是在客户端还是在服务器端。

有没有人遇到过类似的问题?

编辑:发现 websockets 和 CORS 没有任何关系为什么 WebSockets 没有同源策略?为什么我可以连接到 ws://localhost? 所以我的猜测是,服务器可能会拒绝客户端发送的原始标头。我会看看我是否可以得到正在发送的标题