问题标签 [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.
ssl - TLS 超时仅适用于 HTTP/2 时缺少 shutdown() 回溯
我在测试 django-channels 和 daphne 时遇到了这个问题(但这个问题不是他们独有的)。
只有在使用 HTTP/2 时才会出现这种情况。HTTP1.1 工作正常,我从来没有遇到过这样的问题。我做了一些调查,我注意到这self._tlsConnection.shutdown()
被称为 2x,一旦超时self._tlsConnection
被设置为None
,然后再次出于某种未知原因。我对 HTTP 标准不够了解,无法知道这是否是预期的行为。我做错了什么还是这是一个错误?
如何重现
安装带有 HTTP/2 和 TLS 支持的 Twisted
创建 TLS 证书
创建一个简单的 TLS 服务器(它不是 django-channels,它是 klein,因为这个问题不是频道独有的)。这将启动一个服务器https://0.0.0.0:9999
在网络浏览器上,转到https://localhost:9999
。打开开发人员工具并导航到网络选项卡。启用该protocol
选项并确保它是HTTP/2.0
. 我已经在 Chrome 和 Firefox 上进行了测试。
等待几分钟,服务器将命中回溯。
python - 开始使用 Django 频道时遇到问题
我正在创建自己的应用程序,灵感来自Channels 2.0 教程。但是,我无法建立 WebSocket 连接。Daphne 抱怨 404 说找不到 websocket URL。我不确定错误在哪里。
更新:我的 Daphne 在 nginx 服务器后面运行。nginx 配置也更新了:
我的目录结构如下
WebSocketTest/templates/WebSocketTest/Index.html
WebSocketTest/views.py
WebSocketTest/consumers.py
WebSocketTest/routing.py
WebSocketTest/urls.py
仪表板/routing.py
仪表板/urls.py
达芙妮错误日志
Nginx.conf
django - 使用 django 通道的进程间通信在一小时后失败
我有一个 ERP 产品,它需要 nodejs 和 Django 之间的实时双向进程间通信。现在我正在使用 npm WebSocket 和 Django 频道。在使用“python manage.py runserver”开发期间,它工作正常。但在生产过程中,django 推荐使用 daphne 和 runworker。我已经用 nginx 测试过了。现在我的问题是,连接在一段时间后断开。在 Django(1.9) 中,连接持续大约 24 小时。在我更改为 Django2 后,连接仅持续 1 小时左右。系统没有显示任何错误。我的配置如下。
nginx.conf
项目结构
设置.py
asgi.py
用于运行 daphne 的命令
访问日志
nginx错误日志(IP地址已更改)
路由.py
nodejs (pm2) 日志显示此消息
django - Django Channels 2.0 和 Daphne:提供静态和媒体文件
我已经搜索了一段时间,但找不到任何关于如何与 Daphne 一起提供静态和用户上传的 (/media/) 文件的教程。我读过 Apache 不支持 ASGI,可能可以使用 Nginx,但没有具体说明。
我还尝试过whitenoise(仅支持静态文件)和dj-static(仅支持 WSGI)。出于隐私原因,我不想使用外部 CDN。
您能否提供有关可能设置的任何提示?
django - Daphne 使用通道 2 和 Redis 层的 CPU 使用率高
我是一名 Django 开发人员,我最近使用 Channels 2 和 Redis 构建了一个消息传递应用程序。对于每个对话,我都会创建一个组,并在每次重新连接时将所有参与者添加到组中。
我也在使用工人与达芙妮进行生产频道
问题是,在为一个用户创建 10 个组后,由于 daphne 使用了近 100% 的 CPU 使用率,消息传递变得非常缓慢,导致所有站点运行缓慢。
我附上了 CPU 使用率的截图。
我真的很感谢你能建议减少 CPU 使用率
问候, 萨杜拉·纳伊姆
django - 带有 Django 通道的 Websocket 不起作用,连接失败
你好真棒人!
我创建了一个聊天室django-channels
。每次我尝试在生产中通过网络套接字连接到我的聊天室时,它都会失败。在本地它可以正常工作。
我在digitalocean上主持
点冻结:
我已经安装redis-server
了
这是我的设置。
这是我的asgi.py
旁边wsgi.py
这是我的project_folder.rounting.py
我一直在 Firefox 中得到这个,在其他浏览器中也有类似的东西:
Firefox 无法与位于 wss://www.domain_name.com/url-to/1/XBvZjr2pqdf6fhy/ 的服务器建立连接
但是它在本地工作。
更新
这是我的js
django - 在 nginx 上部署 django 频道
我对 nginx 以及如何将其配置为运行频道一无所知。我的环境是django 2.x
ubuntu 16
nginx
daphne
redis
digitalocean
我已经修改了我的 nginx 配置文件一个星期,现在无法让我的套接字连接。
nginx config
我将不胜感激任何帮助。
python - 如何在 Django Channels 中构建一个组,以便 24 小时 group_expiry 时间不会损害我的沟通?
在我的基础设施中,我有一组 RPi 设备通过 websocket 连接到我们的网络服务器。理想情况下,websocket 连接永久保持打开状态,并充当服务器可以将信息向下推送到 RPi 设备的管道,而 RPi 可以将信息发送回服务器。
当 RPi 设备连接到 Channels 时,它会根据连接有效负载中的配置加入特定组。服务器不需要知道连接了哪些设备,因为它使用相同的启发式算法来确定组名,以便将信息发送到适当的设备(如果它们存在)。
我被摧毁的地方是频道中的 group_expiry 时间设置为 24 小时。此外,websocket 超时也设置为 24 小时。我可以处理 websocket 超时,因为 JavaScript 代码会根据需要自动尝试重新连接。但是,当组在 24 小时后过期时,我的设备将停止接收该组的通信。
最终效果是每 24 小时,我必须让 Daphne 弹跳,以便重置和重新创建所有组。整整 24 小时后,Channels 清除了这些组,一切都再次陷入停顿。
我看过这个问题线程:https ://github.com/django/channels/issues/999 。我考虑过将超时调整得更高,但我不知道这是否会对基础设施的任何其他部分产生不利影响。组将始终受到控制,所以我不相信我真的从 group_expiry 为我做的家务中受益。
找到一种方法来禁用组到期是否有任何不利影响?是否有我应该利用的不同架构方法,例如,将日期连接到组名称并使用当前日期自动创建组和成员资格,以便组可以在不中断通信的情况下过期?(这个人为的例子无疑是愚蠢的)。我想我正在寻找建筑方面的建议。
也许我什至完全走错了路。我想我应该首先通过弄清楚如何将其更改为 2 小时并查看站点是否关闭来证明确实是组到期超时正在杀死我。
这是讨论 group_expiry 设置的包: https ://github.com/django/channels_redis
django - Django-Channels 2 Apache CentOS 7 部署
我不能让 Apache 通过 Daphne 服务 websocket。
requirements.txt settings.py
_
Django==2.0.7
channels==2.1.3
asgiref==2.3.2
redis==2.10.6
路由.py
asgi.py
我的消费者.py
httpd.conf
supervisord.conf
在javascript中,我只是尝试连接:
每次访问页面时,它都会WebSocket connection to 'ws://127.0.0.1:9001/' failed: Error during WebSocket handshake: net::ERR_CONNECTION_RESET
在一段时间后给出并在控制台中打印错误和关闭消息。我按照readthedocs
提供的示例设置并使用了 nginx 实例,但它给出了相同的错误。
似乎后端没有收到消息,所以我想设置中肯定有一些东西,即消息队列或redis服务器。我错过了什么?
django - 如何使用主管和 gunicorn 或 daphne 运行应用程序 django 频道
我的主管配置有问题,我的应用程序使用 django_channles 很好,当我使用以下两个代码运行我的应用程序时运行良好
或者
我在 vuejs 中有其他应用程序,上面的代码正在运行,但是当我尝试使用下面的代码运行我的应用程序时,如下所示
我的文件 start.sh
服务器运行良好,但我在 vuejs 中的应用程序显示错误 500,无法在 django_channels 中使用我的应用程序
请告诉我,如何配置我的文件 start.sh 以使用 ASGI
谢谢你的时间。