问题标签 [daphne]

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 回答
129 浏览

python - Django /admin 重定向到 /usr/src/app/admin

我们的 Django 1.9.6 应用程序在 Docker 容器中运行。docker 容器配置了 nginx 来提供静态文件。

我们链接到 /admin,它会将我们带到 /admin 页面,但是当我们单击链接时,它会将我们带到/usr/src/app /admin/api/module/

我可以告诉你 Django 正在从目录 /usr/src/app 运行。

我们尝试添加FORCE_SCRIPT_NAME=''设置,但没有帮助。

Django 应用程序通过 Daphne 运行(因为我们使用的是 Channels)

这是我们的 nginx 配置:

0 投票
1 回答
8268 浏览

python - Django Channels / Daphne中的Websocket超时

简短的问题版本:我在 Daphne 配置、消费者代码或客户端代码中做错了什么?

详情如下:


我正在尝试使用 Django Channels 和 Daphne 接口服务器保持持久的 Websocket 连接打开。我正在使用大多数默认参数启动 Daphne daphne -b 0.0.0.0 -p 8000 my_app.asgi:channel_layer:.

我看到连接在浏览器中的一些空闲时间后关闭,大约 20 秒多。CloseEvent断开连接发送的值为code( 1006Abnormal Closure),未reason设置,wasClean设置为 false。这应该是服务器关闭连接而不发送显式关闭帧。

Daphne CLI 具有默认值分别为 20 秒和 30 秒的标志--ping-interval--ping-timeout对于前者,这被记录为“发送keepalive ping 之前WebSocket 必须空闲的秒数”,对于后者,记录为“如果没有响应keepalive ping,WebSocket 关闭之前的秒数”。我读到这个是因为 Daphne 会等到 WebSocket 空闲 20 秒才发送 ping,如果 30 秒后没有收到响应,它将关闭 Websocket。相反,我看到的是连接在空闲 20 秒后关闭。(经过 3 次默认尝试,在 20081 毫秒、20026 毫秒和 20032 毫秒后关闭)

如果我将服务器更改为使用 启动daphne -b 0.0.0.0 -p 8000 --ping-interval 10 --ping-timeout 60 my_app.asgi:channel_layer,连接仍然关闭,大约 20 秒空闲时间。(在 3 次尝试更新 ping 之后,在 19892 毫秒、20011 毫秒、19956 毫秒后关闭)

下面的代码:


consumer.py

routing.py

demo.js

asgi.py

settings.py

0 投票
1 回答
2565 浏览

python - 在 Daphne 上部署带有频道的 django 应用程序 - SSL

我正在尝试部署一个简单的 django 应用程序来接收 websocket 消息(wss)。

我正在使用以下命令:

settings.py 文件中包含以下内容:

和以下 asgi.py 文件:

给出以下错误:

我觉得我处理密钥不正确,不知道正确的方法是什么。

0 投票
1 回答
532 浏览

python - Django 信号不适用于多容器设置中的通道

我有 django 应用程序并使用通道通道 api实现 websocket 支持。我正在使用解复用器与我的模型绑定。例如,当我保存模型时,它会将更改发送到我打开的 websocket 连接。如果我运行./manage.py runserver 0:80并将所有内容放在一个容器中,一切正常。但是,如果我使用 docker 将我的应用程序与 UWSGI、daphne 和工作容器分开,则不会触发信号。例如,我希望任何芹菜工人(任务)触发信号并通过 websocket 发送更新。在我的多容器设置中,websocket 连接建立正常,网络工作正常,但没有触发该信号。

信号是如何定义的,您可以在github上查看。

我正在使用 django 1.9.12、python 2.7、docker 并在 debian 拉伸上构建。

码头工人-compose.yml

nginx.conf

0 投票
0 回答
2392 浏览

nginx - WebSocket 握手期间的 502 Bad Gateway

我的应用程序使用:

  • django 频道

  • nginx

  • daphne(Django 频道 HTTP/WebSocket 服务器)

在我的前端 html 文件中,有一些这样的 javascript 行:

应用程序的这个 websockets 部分不起作用。当我加载页面时,我的 Chrome Web Inspector 会说:

该网站的其余部分加载正常。

我开始达芙妮: daphne -b 0.0.0.0 -p 8001 ...

和 nginx 配置是这样的:

我的主机上 myapphostname 的主机文件当然已设置并指向应用程序的 IP(通过 vagrant 在 vm 中运行)。

目前我不确定我的应用程序的错误配置是否更多不是 nginx 站点或更多 websockets 后端部分。

我想知道我可以朝哪个方向移动以进一步调试问题。

0 投票
1 回答
1253 浏览

django - 达芙妮服务器命令不可用

我已经使用通道创建了一个 django 应用程序,并使用 对其进行了测试python3 manage.py runserver,据我所知,它运行 Daphne 服务器作为命令的一部分。现在我只想按照文档运行一个独立的 Daphne 服务器和一些工作人员等来部署应用程序。问题是,我似乎daphne在终端中没有可用的命令。运行daphne my_project.asgi:channel_layer只会导致我的终端告诉我找不到 daphne 命令。(运行 Ubuntu 17.10,如果它完全相关)

当我使用 pip 安装频道包时,肯定安装了 Daphne。当我运行pip3 install daphne它时,它说我拥有所有相关的软件包并且安装是最新的。我在这里做傻事吗?似乎这仅适用于其他所有人。如何获得可用的 daphne 命令以便我可以使用它启动服务器?

0 投票
2 回答
4082 浏览

django - 如何在 django 上使用 Daphne 2.0 提供静态媒体

我是 daphne 的新手,我想知道如何在 ubuntu 服务器上部署在 daphne 上运行的 django 应用程序。我已经像文档中所说的那样配置了应用程序,并且工作正常,除了静态文件(js、css、imgs 等)没有加载。我需要做什么?

0 投票
1 回答
7058 浏览

django - 使用 Django 同时运行 UWSGI 和 ASGI

我目前正在运行具有 10 个工作人员的uWSGI的 Django (2.0.2) 服务器

我正在尝试实现实时聊天,并查看了Channel。文档中提到服务器需要与Daphne一起运行,而 Daphne 需要一个名为ASGI的异步 UWSGI 版本。

我设法安装和设置 ASGI,然后用 daphne 运行服务器,但只有一个工作人员(据我所知,这是 ASGI 的限制),但工作人员的负载太高了。

是否可以使用具有 10 个工作人员的 uWSGI 运行服务器来回复 HTTP/HTTPS 请求并使用 ASGI/Daphne 处理 WS/WSS (WebSocket) 请求?或者也许可以运行多个 ASGI 实例?

0 投票
1 回答
347 浏览

django - 修改 nginx 配置以正确反向代理 websockets

当前的 nginx 配置:

一切正常,除了 websockets。我想这是因为它不处理 http upgrade 标头...我查看了文档,但我无法弄清楚如何在不破坏其他任何内容的情况下修改此配置。

0 投票
2 回答
1608 浏览

django - 通道 Websocket 立即与 ssl 断开连接

我尝试使用 ssl 从生产服务器上的频道文档中运行教程。几个小时后,我设法建立了连接,但它立即断开了连接:

我的堆栈是

我有教程中代码的精确复制粘贴,除了 room.html 中的这一部分

这是我的 nginx 配置文件

我和达芙妮一起跑daphne -u Daphne.sock Project.asgi:application -v 3

我也尝试绕过 nginx 并使用sudo daphne -e ssl:8443:privateKey=/etc/letsencrypt/live/domain.co/privkey.pem:certKey=/etc/letsencrypt/live/domain.co/fullchain.pem Project.settings:CHANNEL_LAYERS 但我得到了相同的结果。

带有消息聊天套接字的前中断因错误代码1011 (Internal Error)而无故关闭。