问题标签 [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 - 使用 Daphne 服务 Django 和频道
我在 Google Compute Engine 上有一个 Django 项目。这是我的 Django 项目的结构。
按照教程б我做了一个asgi.py
:
我asgi_redis
用作后端。设置文件如下所示:
然后我尝试启动服务器。我运行python manage.py runworker &
并得到:
然后运行达芙妮:
然后我开始向服务器发送请求,但This site can’t be reached
出现错误。
python - Django,异常后通道层重新加载
我使用 django 频道并在收到消息时收到此异常:
ws_message
代码:
我究竟做错了什么?
python - django daphne ModuleNotFoundError:'设置'
我使用频道制作了一个 django 项目。
我想部署它。因为我的项目使用渠道,我应该设置基于ASGI的环境。
我推动了我的项目并成功了。所以我得到了 URL 地址。
https://demo-multichat.herokuapp.com
如您所见,发生了应用程序错误。
我得到了日志。
$ heroku logs
我认为 Procfile 出了点问题。下面是我的 Procfile 设置。
网站:达芙妮 multichat.asgi:channel_layer
工人:python manage.py runworker
在我的本地终端中,我执行了每一行。
第一个$ python manage.py runworker
没事。好的。
第二个$ daphne multichat.asgi:channel_layer
我收到错误消息。
我该如何解决这个问题?我需要你的帮助。
如果您需要我的项目源代码,我将 github 存储库 url 留作评论。
django - Django Channels Nginx 制作
我有一个 django 项目,最近添加了使用 websockets 的频道。这似乎一切正常,但我遇到的问题是准备好生产。
我的设置如下:
因为我已经在混音中添加了频道。我花了最后一天试图让它工作。
在所有的教程中,他们都说你在某个端口上运行 daphne,然后展示如何为此设置 nginx。
但是让 gunicorn 为 django 服务呢?
所以现在我有 guncorn 在 8001 上运行这个 django 应用程序
如果我在另一个端口上运行 daphne,比如说 8002 - 它应该如何知道这个 django 项目的标准?那么运行工人呢?
Gunicorn、Daphne 和 runworkers 应该一起跑步吗?
django - 有什么方法可以使用 Django Channels 构建交互式终端,但目前存在限制?
似乎每次在 websocket 上发生任何事情时,Django Channels 都没有持久状态。即使在同一个 websocket 连接中,您也无法在每次调用receive()
基于类的消费者之间保留任何内容。如果不能序列化到channel_session中,则不能存储。
我假设基于类的消费者将在 Web 套接字连接期间持续存在。
我正在尝试构建的是一个简单的终端模拟器,当 websocket 连接时将创建一个 shell 会话。读取的数据将作为输入传递给 shell,而 shell 的输出将传递到 websocket。
我找不到在调用 receive() 之间保留任何内容的方法。似乎他们把所有关于 HTTP 的坏处都带到了 websockets 上。每次调用conenct()
, recieve()
,disconnect()
整个 Consumer 类都会被重新实例化。
所以我错过了一些明显的东西。我可以创建另一个线程并从组中读取它吗?
编辑:可以在下面的评论中找到答案。你可以破解它。Channels 3.0 不会在每次接收调用时实例化消费者。
ubuntu - Django 频道服务器配置:Ubuntu。404 握手
我正在尝试配置 django 频道以在我的 ubuntu 服务器(数字海洋)上运行。
我有 redis-server 运行在port 6379
. 达芙妮在端点上监听unix:/home/mysite/sockets/mysite.sock
(HTTP/2 support enabled
不确定现阶段是否需要)我也有一个./manage.py runworker
监听。我的 daphne 运行命令是
我的 http 请求通过(在 daphne 日志中)就像在我的本地环境中一样,例如
但是,当我通过 js 请求 websocket url 时,一切都崩溃了......
看起来它将请求视为http请求而不是websocket连接?这也是js控制台日志...
谁能建议这个 404 可能在哪里被解雇?或有关调试的任何提示。
谢谢。
django - 在 systemd 上使用 daphne 运行 django 频道
首先,很抱歉这个问题太长了,我希望你们中的一些人对此有耐心。
TL; DR:如何在 systemd 中正确加载 django 设置?
我正在遵循本指南,使用 Daphne 部署 Django 通道,因此我可以运行一些实时应用程序(使用 WebSockets)。在没有 nginx 的情况下,从命令行运行 worker (python manage.py runworker) 和 interface (daphne),我可以访问正确的通道消费者类,如下面的日志所示(这些是从 javascript 客户端触发的) :
这些事件由以下 javascript 调用触发:
使用 nginx,并在 systemd 上同时运行接口和工作程序,尽管使用了完全相同的触发器输入,但我得到了以下日志。
请注意,接收通道正在路由到null_consumer
. channels.routing
我相信这里的问题只是没有很好地设置的事实。由于我在两个版本中使用相同的设置(Django 设置文件),这可能意味着设置本身没有被正确加载。请考虑以下文件。
应该设置channels.routing
为:
同样,我不认为配置本身是错误的,因为它可以在没有 systemd 的情况下工作。最后,这是我的 systemd 配置:
请注意我根据链接指南导出到环境的 DJANGO_SETTINGS_MODULE 变量的两个配置文件。我相信这没有按预期工作。
python - 达芙妮不听 websockets
我有一个用 django-channels+celery 编写的 webapp,它使用 websockets 进行客户端-服务器通信。在我的主机上运行 daphne、celery worker 和 redis 对其进行测试后,我决定用 docker-compose 封装所有内容以拥有一个可部署的系统。
这就是问题开始的地方。在学习、调整和调试我的 docler-compose.yaml 之后,我设法让它工作,但我仍然无法让 websockets 再次工作。
如果我打开 websocket 并发送命令,无论是从应用程序的 javascript 部分内部,还是从 chrome 中的 javascript 控制台,它都不会触发 ws_connect 或 ws_receive 消费者。
这是我的设置:
设置.py
路由.py
消费者.py
docker-compose.yaml
我运行服务器
和工人
我从等式中删除了 nginx,所以我在单独的容器中运行 worker 和 daphne,我希望所有的 websocket 连接都由 daphne 容器管理,然后将计算任务分派给 worker。问题是,当我打开 websocket 并发送数据时,什么也没有发生
码头工人组成
在这无线电沉默之后。在主机上运行所有内容时,我打印了输出,但现在我什么都没有。知道问题可能出在哪里吗?
python - 远程调试在 Docker 容器中运行的 Visual Studio Code、Django、Daphne、Daphne Workers
刚开始使用 Visual Studio 代码进行 python 开发,到目前为止我很喜欢它。我在 docker 上运行的 django 应用程序中进行远程调试时遇到问题。希望有人能指出我正确的方向,通过 docker 在 django 中设置 VS 调试。
我在 docker 容器中运行 Django rest 框架。由于 websocket 连接,我正在使用 asgi 服务器 daphne。我想知道是否有一种方法可以在 django 中与 daphne 工作人员一起在 docker 中使用远程调试。
我看过一些教程,但它们是针对 wsgi 部分的。我遇到的问题是 daphne 使用工作人员连接到 daphne 服务器并以这种方式处理请求。
我尝试过的事情:
可以用来
pdb
调试。必须连接到工作容器并指定stdin_open: true
andtty: true
。它有效,但是是一个乏味的过程。尝试了指定的教程 URL 中涉及的步骤,但它不适用于 Visual Studio Code。
还尝试在 pycharm 中使用远程调试,但后台骨架进程使我的计算机非常慢。但我能够让它发挥作用。希望我可以在 Visual Studio Code 中做同样的事情。
这是我的 docker-compose.yml 的 daphne 和 daphne worker 设置
我收到连接错误。这是我对 Visual Studio 代码的设置
这给了我一个连接错误。
python - Daphne Django 文件上传大小限制
我将 Daphne 用于套接字和 http 连接。我正在运行 4 个工作容器,现在在 docker 容器中本地运行所有内容。
如果我尝试上传 400MB 的文件,我的 daphne 服务器会失败。它适用于最大 15MB 的小文件。
我的 docker 容器退出并显示错误代码 137。我在 daphne 日志中没有收到任何错误。daphne 容器刚刚死掉,但工作容器继续运行。
有谁知道是否有办法增加对达芙妮的上传限制,或者我错过了其他东西?
我通过以下方式启动达芙妮服务器
daphne -b 0.0.0.0 -p 8001 project.asgi:channel_layer --access-log=${LOGS}/daphne.access.log