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

python - 使用 Daphne 服务 Django 和频道

我在 Google Compute Engine 上有一个 Django 项目。这是我的 Django 项目的结构。

按照教程б我做了一个asgi.py

asgi_redis用作后端。设置文件如下所示:

然后我尝试启动服务器。我运行python manage.py runworker &并得到:

然后运行达芙妮:

然后我开始向服务器发送请求,但This site can’t be reached出现错误。

0 投票
1 回答
196 浏览

python - Django,异常后通道层重新加载

我使用 django 频道并在收到消息时收到此异常:

ws_message代码:

我究竟做错了什么?

0 投票
0 回答
1736 浏览

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 留作评论。

0 投票
3 回答
12725 浏览

django - Django Channels Nginx 制作

我有一个 django 项目,最近添加了使用 websockets 的频道。这似乎一切正常,但我遇到的问题是准备好生产。

我的设置如下:

因为我已经在混音中添加了频道。我花了最后一天试图让它工作。

在所有的教程中,他们都说你在某个端口上运行 daphne,然后展示如何为此设置 nginx。

但是让 gunicorn 为 django 服务呢?

所以现在我有 guncorn 在 8001 上运行这个 django 应用程序

如果我在另一个端口上运行 daphne,比如说 8002 - 它应该如何知道这个 django 项目的标准?那么运行工人呢?

Gunicorn、Daphne 和 runworkers 应该一起跑步吗?

0 投票
1 回答
285 浏览

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 不会在每次接收调用时实例化消费者。

0 投票
1 回答
2434 浏览

ubuntu - Django 频道服务器配置:Ubuntu。404 握手

我正在尝试配置 django 频道以在我的 ubuntu 服务器(数字海洋)上运行。

我有 redis-server 运行在port 6379. 达芙妮在端点上监听unix:/home/mysite/sockets/mysite.sockHTTP/2 support enabled不确定现阶段是否需要)我也有一个./manage.py runworker监听。我的 daphne 运行命令是

我的 http 请求通过(在 daphne 日志中)就像在我的本地环境中一样,例如

但是,当我通过 js 请求 websocket url 时,一切都崩溃了......

看起来它将请求视为http请求而不是websocket连接?这也是js控制台日志...

谁能建议这个 404 可能在哪里被解雇?或有关调试的任何提示。

谢谢。

0 投票
3 回答
9800 浏览

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 变量的两个配置文件。我相信这没有按预期工作。

0 投票
2 回答
1726 浏览

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 并发送数据时,什么也没有发生

码头工人组成

在这无线电沉默之后。在主机上运行所有内容时,我打印了输出,但现在我什么都没有。知道问题可能出在哪里吗?

0 投票
0 回答
744 浏览

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: trueand tty: true。它有效,但是是一个乏味的过程。

  • 尝试了指定的教程 URL 中涉及的步骤,但它不适用于 Visual Studio Code。

  • 还尝试在 pycharm 中使用远程调试,但后台骨架进程使我的计算机非常慢。但我能够让它发挥作用。希望我可以在 Visual Studio Code 中做同样的事情。

这是我的 docker-compose.yml 的 daphne 和 daphne worker 设置

我收到连接错误。这是我对 Visual Studio 代码的设置

这给了我一个连接错误。

0 投票
1 回答
839 浏览

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