问题标签 [asgi]
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 Rest Framework 中从 WSGI 迁移到 ASGI 后无法运行异步函数
- 在 DRF 中实现通道功能时,我
WSGI
从ASGI
. - 所以目前我在同一个项目->同一个应用程序中有 REST API 和通道。
- 频道正在工作,现有的 API 也可以使用,但其中包含的 API除外
async def
我在下面收到错误-
由于此方法在调用函数时view
不是async
我不能调用的await
。我假设WSGI->ASGI
迁移是这次中断的原因。
请帮忙!!
django - Whatsapp 或 Messenger 等消息应用程序是如何构建的?
我正在尝试构建一个像 Whatsapp 这样的移动消息应用程序,但不知道从哪里开始。首先,我不知道消息应用程序如何在用户之间发送消息。他们使用什么类型的协议?他们使用网络套接字吗?他们是否使用某种长轮询?
我的意思是我真正想知道的是服务器是如何工作的,这种通信有名称吗?
仅供参考,我正在尝试使用Django
(类似于 django 频道)服务器和React native
移动应用程序构建一个消息传递应用程序。
谢谢阅读。
python - 为什么 uvicorn 端口 80 选项适用于另一个端口?
我尝试了 fastApi 和 uvicorn。
但我想知道为什么当我在端口 80 中执行 uvicorn 时,它在端口 52384 上工作。52384 显示 api 响应但 80 没有。
在 dockerfile 中,我添加了EXPOSE 80 80
.
django - Django Channels App Websocket连接失败
我相信我遇到了与此处 和此处找到的问题类似的问题。
要点是我在 Amazon-ec2 实例上运行带有通道的 Django 应用程序,并且 websocket 无法连接。
我关于 websockets 的大部分代码都来自这里的 django-channels 教程。
通过应用程序负载均衡器后面的安全 dns 名称引导流量。
我完全在 Daphne 上运行它(处理 https 和 websocket 流量),配置非常少:
我还使用mozilla-django-oidc模块通过 openID-connect 进行身份验证。但是对于 websocket 测试,我不期待身份验证。我觉得有必要指出这个问题是否与 websocket 身份验证有关。
在开发中,我正在运行一个本地 redis 集群作为我的通道层。我的开发应用程序(所有 http:// 和 ws://)连接到 websocket 没有问题。聊天应用程序按预期工作。我可以连接到我的 websockets 并通过
这是 asgi.py 中的代码
以及 chat/routing.py 中的代码
在生产中,我使用 elasticache redis 集群作为我的通道层。我可以在 django shell 中测试它,它连接/发送/接收。
但是在生产聊天中,我无法到达房间或看到上面的WSCONNECTING消息。它永远不会升级到 websocket 的连接。之后的下一个日志是
就像它试图将该路由解析为 http 而不是 websocket 一样。
在做了一些额外的阅读之后,我尝试使用在 Daphne 上运行的主机/端口,比如
这并没有导致立即失败,但最终从未连接。
我觉得这与在 websocket url 中用作主机名的面向公众的主机名有关。允许所有入站流量。我不确定这与手头的问题有何关系。
我仍在努力学习如何解决这一切。任何建议都将不胜感激。
谢谢!
python-3.x - Django 频道私人聊天服务器
我是 Django 频道和 ASGI 应用程序本身的新手,所以在构建私人聊天应用程序时我有点困惑。
私人聊天的教程不多,都是针对聊天室和广播的。我对如何进行私人聊天几乎没有什么想法,但我不确定采用哪种方法。
- 我的第一个想法是不使用通道层并单独处理每个连接。我的意思是每次用户来到聊天应用程序时,它都会打开一个名为 chat__{userid} 的连接,如果 user_A 向 user_B 发送消息,它将首先检查 user_A 是否有权向 user_B 发送消息,然后调用 send user_B 上的方法,在发送消息后将确认发送回 user_A。
上述实现存在问题,如果用户打开不同的选项卡,我应该如何处理。
要使用 channel_layers 建立用户之间的连接,如果他们在彼此聊天时都在线,但是当用户与多个用户聊天时会出现问题,我是否需要为每个对话打开多个 WebSocket 连接。这将解决多个选项卡和会话问题,因为我可以将它们全部添加到同一个通道层中。
第三种方法类似于第一种方法,但不同之处在于这次使用通道层,以便单个用户的所有会话都可以在一个通道层中,并且我可以将消息广播到同一用户的所有会话。
我认为第三种方法适用于这种情况,但正如我上面提到的,我在 ASGI 应用程序方面没有太多经验,也不知道哪种方法最有效。
任何建议表示赞赏。
python - Django 频道无法在生产环境中正常工作
我有一个非常大的频道问题。当我尝试在生产中运行 asgi 服务器时出现问题,但在终端中运行时没有问题。
首先让我给你看一个小代码
还有更多,但我也评论了它们,看看问题是否正在解决,然后猜猜是什么......
主管配置
好的,这些是配置。
当我使用
没有问题,但是当在主管内部使用这个时,我唯一得到的是:
即使我尝试使用正确的代码启动服务,我也做了:
但结果是一样的:
它就像 websocket_connec() 永远不会被调用
我试图用syncconsumer创建它,但问题是一样的
但是当我停止 supervisorctl 所有运行
版本:python:3.6.8 django:2.2.6 channels:2.4.0 channels_redis:2.4.2 daphne:2.5.0
帮我取悦它一个真正的产品项目,我不再做什么我尝试了一切并阅读了堆栈溢出 github 等中的每一行。
python - 如何使用所有必要的目录创建我的第一个 python startlette 项目?
我必须研究一个用python的ASGI框架Starlette编写的现有项目。虽然我了解 routs 和 handlers 是如何工作的,但我不太清楚项目的目录结构是如何生成的。在线文档很少谈论这方面。是否有生成此目录结构的命令?以下是示例目录结构。
django - 使用 Content-Type 包装的 RTSP:StreamingHttpResponse 中的 image/jpeg
试图包装 RSTP 流,StreamingHttpResponse
并且在 Django 中使用 WSGI 服务器完全可以正常工作,但我需要使用 ASGI 应用程序来实现这一点。
下面的代码供参考。
在 ASGI 中,由于 while True 循环而不断加载,但在 WSGI 中它可以正常工作。我不确定它是否因为 WSGI 或 ASGI 而发生。
asgi.py
django - 使用 Django 频道时,Django StreamingHttpResponse 停止工作
我使用以下代码从 cv2 流式传输图像:
视图.py
流.html
一旦我将 Django 频道添加到我的项目中,StreamingHttpResponse 就会停止工作
设置.py:
asgi.py
我需要一个解决方案,允许我从 cv2 流式传输图像,同时使用 django 频道或类似的东西。谢谢大家!