问题标签 [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.

0 投票
0 回答
98 浏览

python - 在 Django Rest Framework 中从 WSGI 迁移到 ASGI 后无法运行异步函数

  • 在 DRF 中实现通道功能时,我WSGIASGI.
  • 所以目前我在同一个项目->同一个应用程序中有 REST API 和通道。
  • 频道正在工作,现有的 API 也可以使用,但其中包含的 API除外async def

我在下面收到错误-

由于此方法在调用函数时view不是async我不能调用的await。我假设WSGI->ASGI迁移是这次中断的原因。

请帮忙!!

0 投票
1 回答
505 浏览

django - Whatsapp 或 Messenger 等消息应用程序是如何构建的?

我正在尝试构建一个像 Whatsapp 这样的移动消息应用程序,但不知道从哪里开始。首先,我不知道消息应用程序如何在用户之间发送消息。他们使用什么类型的协议?他们使用网络套接字吗?他们是否使用某种长轮询?
我的意思是我真正想知道的是服务器是如何工作的,这种通信有名称吗?

仅供参考,我正在尝试使用Django(类似于 django 频道)服务器和React native移动应用程序构建一个消息传递应用程序。

谢谢阅读。

0 投票
1 回答
1286 浏览

python - 为什么 uvicorn 端口 80 选项适用于另一个端口?

我尝试了 fastApi 和 uvicorn。

但我想知道为什么当我在端口 80 中执行 uvicorn 时,它在端口 52384 上工作。52384 显示 api 响应但 80 没有。

在 dockerfile 中,我添加了EXPOSE 80 80.

0 投票
1 回答
1048 浏览

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 上运行的主机/端口,比如

这并没有导致立即失败,但最终从未连接。

这是chrome中的错误 在此处输入图像描述

我觉得这与在 websocket url 中用作主机名的面向公众的主机名有关。允许所有入站流量。我不确定这与手头的问题有何关系。

我仍在努力学习如何解决这一切。任何建议都将不胜感激。

谢谢!

0 投票
1 回答
472 浏览

python-3.x - Django 频道私人聊天服务器

我是 Django 频道和 ASGI 应用程序本身的新手,所以在构建私人聊天应用程序时我有点困惑。

私人聊天的教程不多,都是针对聊天室和广播的。我对如何进行私人聊天几乎没有什么想法,但我不确定采用哪种方法。

  1. 我的第一个想法是不使用通道层并单独处理每个连接。我的意思是每次用户来到聊天应用程序时,它都会打开一个名为 chat__{userid} 的连接,如果 user_A 向 user_B 发送消息,它将首先检查 user_A 是否有权向 user_B 发送消息,然后调用 send user_B 上的方法,在发送消息后将确认发送回 user_A。

上述实现存在问题,如果用户打开不同的选项卡,我应该如何处理。

  1. 要使用 channel_layers 建立用户之间的连接,如果他们在彼此聊天时都在线,但是当用户与多个用户聊天时会出现问题,我是否需要为每个对话打开多个 WebSocket 连接。这将解决多个选项卡和会话问题,因为我可以将它们全部添加到同一个通道层中。

  2. 第三种方法类似于第一种方法,但不同之处在于这次使用通道层,以便单个用户的所有会话都可以在一个通道层中,并且我可以将消息广播到同一用户的所有会话。

我认为第三种方法适用于这种情况,但正如我上面提到的,我在 ASGI 应用程序方面没有太多经验,也不知道哪种方法最有效。

任何建议表示赞赏。

0 投票
1 回答
452 浏览

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 等中的每一行。

0 投票
0 回答
28 浏览

python - 如何使用所有必要的目录创建我的第一个 python startlette 项目?

我必须研究一个用python的ASGI框架Starlette编写的现有项目。虽然我了解 routs 和 handlers 是如何工作的,但我不太清楚项目的目录结构是如何生成的。在线文档很少谈论这方面。是否有生成此目录结构的命令?以下是示例目录结构。

0 投票
0 回答
589 浏览

django - django.core.exceptions.SynchronousOnlyOperation:您不能从异步上下文中调用它 - 使用线程或 sync_to_async

这是我的 asgi.py:

错误信息:

0 投票
0 回答
141 浏览

django - 使用 Content-Type 包装的 RTSP:StreamingHttpResponse 中的 image/jpeg

试图包装 RSTP 流,StreamingHttpResponse并且在 Django 中使用 WSGI 服务器完全可以正常工作,但我需要使用 ASGI 应用程序来实现这一点。

下面的代码供参考。

在 ASGI 中,由于 while True 循环而不断加载,但在 WSGI 中它可以正常工作。我不确定它是否因为 WSGI 或 ASGI 而发生。

asgi.py

0 投票
0 回答
116 浏览

django - 使用 Django 频道时,Django StreamingHttpResponse 停止工作

我使用以下代码从 cv2 流式传输图像:

视图.py

流.html

一旦我将 Django 频道添加到我的项目中,StreamingHttpResponse 就会停止工作

设置.py

asgi.py

我需要一个解决方案,允许我从 cv2 流式传输图像,同时使用 django 频道或类似的东西。谢谢大家!