问题标签 [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.
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 配置:
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
( 1006
Abnormal 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
:
python - 在 Daphne 上部署带有频道的 django 应用程序 - SSL
我正在尝试部署一个简单的 django 应用程序来接收 websocket 消息(wss)。
我正在使用以下命令:
settings.py 文件中包含以下内容:
和以下 asgi.py 文件:
给出以下错误:
我觉得我处理密钥不正确,不知道正确的方法是什么。
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
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 后端部分。
我想知道我可以朝哪个方向移动以进一步调试问题。
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 命令以便我可以使用它启动服务器?
django - 如何在 django 上使用 Daphne 2.0 提供静态媒体
我是 daphne 的新手,我想知道如何在 ubuntu 服务器上部署在 daphne 上运行的 django 应用程序。我已经像文档中所说的那样配置了应用程序,并且工作正常,除了静态文件(js、css、imgs 等)没有加载。我需要做什么?
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 实例?
django - 修改 nginx 配置以正确反向代理 websockets
当前的 nginx 配置:
一切正常,除了 websockets。我想这是因为它不处理 http upgrade 标头...我查看了文档,但我无法弄清楚如何在不破坏其他任何内容的情况下修改此配置。
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)
而无故关闭。