问题标签 [django-channels]

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 投票
2 回答
3731 浏览

django - Django channels times out with daphne and worker

I have a problem with django channels. My Django app was running perfectly with WSGI for HTTP requests. I tried to migrate to channels in order to allow websocket requests, and it turns out that after installing channels and running ASGI (daphne) and a worker, the server answers error 503 and the browser displays error 504 (time out) for the http requests that were previously working (admin page for example). I read all the tutorial I could find and I do not see what the problem can be. Moreover, if I run with "runserver", it works fine.

I have an Nginx in front of the app (on a separate server), working as proxy and loadbalancer. I use Django 1.9.5 with asgi-redis>=0.10.0, channels>=0.17.0 and daphne>=0.15.0. The wsgi.py and asgi.py files are in the same folder. Redis is working.

The command I was previously using with WSGI (and which still works if I switch back to it) is: uwsgi --http :8000 --master --enable-threads --module Cats.wsgi

The command that works using runserver is: python manage.py runserver 0.0.0.0:8000

The commands that fail for the requests that work with the 2 other commands are: daphne -b 0.0.0.0 -p 8000 Cats.asgi:channel_layer python manage.py runworker

Other info: I added 'channels' in the installed apps (in settings.py)

other settings.py relevant info

}

Cats/routing.py

main/routing.py

main/consumers.py

Any idea what could be wrong? All help much appreciated! Ty

EDIT: I tried a new thing:

And this does not work, while python manage.py runserver 0.0.0.0:8000 was working...

Any idea that could help?

0 投票
1 回答
246 浏览

django - Django频道组发送在发送一定次数后死亡

我有一些奇怪的行为,其中:

执行此发送 10 次或更多次后失败。常见的原因是什么?我没有在我的工作人员身上看到任何错误消息,除了它没有记录它正在发送任何信息。

通常我会看到:

发送一定次数后不会显示此消息。我正在做一些更新行为,此发送将每 5 秒发生一次。

编辑:

此发送不会响应客户端发送而发生。我通过这个组向客户端发送服务器数据。我认为这是问题所在?

编辑:

进一步研究,我在 django-channels github 上找到了这条消息:

https://github.com/django/channels/issues/107

andrewgodwin:“......频道有代码来检测消息何时被重新排队太多次(默认情况下现在是 10 次),然后它会杀死它以防止活锁......”

在接收上下文之外发送,例如:

反复排队?

0 投票
1 回答
166 浏览

django - 如何在同一主机上运行 2 个带有 Django 频道的站点?

我尝试用 supervisord 启动 2 台 daphne 服务器和 2 台工作人员。
但有时来自站点#1 的请求在worker #2 上,而来自站点#2 的请求在worker #1 上。

我应该使用不同的 Redis 服务器吗?瑞丽?
还是我在设置中缺少一些参数?

0 投票
1 回答
449 浏览

django - django 频道集成问题,websocket.receive 不听

通过各种博客文章,我正在尝试使用 django 为 websockets 功能实现 django 通道

我正在使用 django 1.9.1

具有这些依赖项: asgi-redis==0.10.0 channels==0.12.0 daphne==0.11.1

设置.py

路由.py

消费者.py

从浏览器控制台运行服务器后,我正在调用它

在上面的调用中,在 runserver 日志中我可以看到对 websocket 的调用,如下所示:“[2016/11/15 19:35:39] WebSocket CONNECT /chat/ [127.0.0.1:55499]”,但我的消费者。 py 方法(websocket_receive) 永远不会被调用..

知道我哪里可能出错了吗?

0 投票
1 回答
1383 浏览

django - 带有 DEBUG True 的 Django runserver 提供错误的静态文件

尝试使用 Django 1.10 通过 runserver 为开发服务器提供静态文件

我有'django.contrib.staticfiles'INSTALLED_APPS的和以下相关设置:

这适用于 collectstatic,并且可以直接通过 NginX 正常服务。

但是使用 runserver + DEBUG=True,我希望 Django 网络服务器从static/文件夹提供服务,但它是从node_modules/文件夹提供服务。

如果我删除/重命名node_modules/,那么我会得到静态文件的 404。

静态文件是通过副本(不是符号链接)收集的。

我正在使用可能劫持一切的 Django 频道?

0 投票
0 回答
607 浏览

python - 在 Django 频道中使用 HTTP 会话

我有以下问题。我有一个 django web 应用程序,我需要上传 CSV 文件,然后使用 django-channels 流式传输它们。我决定将上传的 CSV 文件的路径保存在 http 会话中。

从 django-channels 文档中,我了解到我可以访问 websocket 内的 http session 对象,但是使用以下代码返回一个没有之前添加的文件路径的对象。

打印 http 会话的结果是:

我的问题是,我真的可以访问 websockets 中的 HTTP 会话吗?或者我应该考虑另一种方法吗?

0 投票
1 回答
72 浏览

django - django 如何同时与 websocket 服务器和 webserver 一起工作?

我想我对websocket server和webserver的理解有些混乱。

所以我遵循了 django 频道的教程,在那里我创建了一个小应用程序来监听频道并返回一些响应。

同时,我仍然可以提供具有正常视图功能的网页,那么 django 是如何做到这一点的呢?

0 投票
1 回答
816 浏览

django - django 频道:除了某些两个人之外,如何限制对聊天室的访问?

我正在使用 Django 频道构建一个聊天应用程序。现在,如果用户知道他们的网址,该应用程序允许用户观看任何聊天室。

我想限制对每个聊天室的访问,除了某些两个人。我如何在 Django 频道上实现这一点?一般来说,我如何只允许某些用户访问 Django 应用程序上的 url?

我的聊天应用程序中的聊天室网址如下。


url(r'^(?P[\w-]{,50})/$', views.chat_room, name='chat_room')

0 投票
1 回答
448 浏览

python - Django python 无法从模块类型中导入 FunctionType

我正在尝试使用 django 频道和 asgi 来运行一个简单的聊天服务器。我安装了频道和 daphne,但是当我尝试运行开发服务器时,出现以下错误。

我检查了最后一个文件,发现错误与类型模块有关。该行import types工作正常,但是当脚本尝试调用types.FunctionType它时会给出 AttributeError。当我在 shell 上导入脚本时,它按预期工作

任何帮助是极大的赞赏。:)

编辑 print(types)输出: <module 'types' from '/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/types.pyc'>

编辑 2 我用频道开始了另一个 django 项目,从 github 克隆了一个存储库。当我在安装依赖项后运行开发服务器时,它运行良好。通道 utils 文件完全相同,因此任何解释此问题的帮助都会有所帮助。

0 投票
0 回答
182 浏览

django - 为什么安装频道后我的 Django 无法运行服务器?

在我安装“频道”之前一切正常。安装频道后,我在 settings.py 的 INSTALLED_APPS 中添加了“频道”,然后当我执行 $ python3 manage.py runserver 时出现以下错误:

我不知道发生了什么,我非常感谢所有帮助。我安装了所有的包

我使用的系统是 RPi 3 上的 Raspbian。我在安装频道时收到很多警告,这与此错误有关吗?我真的需要一些帮助谢谢!