问题标签 [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 投票
1 回答
2365 浏览

django - Django 等待带有 @database_sync_to_async 装饰器的函数以获取多个对象抛出错误

我正在为异步功能集成 django 频道。我正在尝试在函数上使用 await 来获取用户模型的多个对象。

消费者.py

尝试从上述代码中获取用户会导致错误“您不能从异步上下文中调用它 - 使用线程或 sync_to_async。”

但是,如果我使用“UserModel.objects.all().first()”获取单个对象,一切正常。

0 投票
2 回答
1177 浏览

django - Django Channel 2 with Daphne on Heroku 在启动时崩溃

我在 heroku 上使用 Channels 2 创建了一个 django 应用程序,但它在以 503 错误代码开始时崩溃。

档案:

设置.py

asgi.py

0 投票
1 回答
308 浏览

python - hypercorn:客户端证书验证

我正在尝试在 hypercorn 中启用客户端证书验证。如果重要的话,我正在使用FastAPI文档指导我使用参数--verify-mode并简单地说明:

对等方证书的 SSL 验证模式,请参阅 ssl.VerifyMode 枚举以获取可能的值。

我尝试了一些猜测,但得到了一个致命错误:“hypercorn: error: argument --verify-mode: Not a valid verify mode”

我摸索了一下,在项目历史中找到了这段代码:

所以我这样做是为了验证有效值(Python 3.8):

但是,试图通过0,12to --verify-modeall 会给出“不是有效的验证模式”错误。我可以使用--cert-reqs警告“警告:请改用 verify_mode”来传递这些值,但它会根据我在config.py中看到的代码启动并设置SSLContext verify_mode值。

不幸的是,这似乎没有任何作用。GET当我在浏览器中执行 a 或至少一个错误时,我希望被提示输入客户端证书,因为它被设置为“必需”。但相反,我得到了很好的 200 错误代码响应。

我找不到任何关于使用 hypercorn 执行此操作的好的示例、教程或文档。这里还有什么我需要做的,比如设置一些其他属性吗?任何指导表示赞赏。

0 投票
0 回答
3168 浏览

django-channels - 如何使用 nginx 和 django chanels 设置 gunicorn 和 uvicorn?

我被这个问题困住了,我需要帮助。我正在尝试使用 django-channels 配置 nginx 服务器,并且我有以下配置
Nginx


独角兽:

我使用本教程来配置 gunicorn,但是对于 websocket,我在django-channel 网站上读到,我必须使用主管设置 daphne,我不知道如何也找不到如何做到这一点。有人可以帮助我提供一些有关如何执行此操作的教程或提示,或者有人可以向我解释需要什么主管吗?我读到 uvicorn 很容易使用 gunicorn 和 django-chanels 安装和配置,但我还是没有发现如何做到这一点。

0 投票
2 回答
1060 浏览

graphene-django - 从 Uvicorn 运行时,Django 石墨烯 GraphiQL 页面未加载

不知道我设置错了什么,但在 uvicorn 中运行时我没有得到 graphiql 界面uvicorn mysite.asgi:application

但是当我这样做时它加载得很好python manage.py runserver

这是我安装的:

在 settings.py 我有:

0 投票
1 回答
137 浏览

python - Heroku 上的 Django ASGI 部署

我想清楚地解释我应该如何在 Heroku 上部署 Django 3.x 和通道 2.x。我的 asgi.py 文件

还,

返回一个错误,指出没有名为 channels.asgi 的模块

0 投票
1 回答
2023 浏览

django - 使用 django 频道的 heroku 的正确 procfile / 要求是什么?

tl;dr - django 频道应用程序使用 manage.py runserver 在本地运行,但不在 heroku 上。

我是 django 频道的新手 - 尝试使用频道到 heroku 部署一个非常基本的 django 应用程序。我最初使用标准django polls 教程构建了项目,并将其部署到 heroku。然后我使用django 频道教程添加了一个聊天应用程序。按照他们的建议和“python manage.py runserver”,使用 docker 来运行 redis 服务器,设法在本地正常运行。

我试图将它部署到heroku或使用heroku local在本地运行它时遇到了困难。我已经在 heroku 中添加了 redis 插件并修改了 settings.py 以指向 REDIS_URL 环境变量。如果合适的话,我还修改了我的模板以使用 wss(我相信这对于 heroku 来说是必要的):

因此,我得出的结论是问题出在 procfile 上。我不确定那里的使用说明是什么。最初使用的民意调查教程:

如果我只是使用“heroku local”工作正常并且部署工作正常,但是当我尝试发送聊天消息时它什么也不做,并在控制台中显示 404。我知道我必须将其更改为使用 asgi 服务器而不是 gunicorn。发现本教程部署一个带有通道到heroku的应用程序,它使用:

我试过了,但这就是我卡住的地方。这是我在本地运行 heroku 时得到的结果:

导入错误消息让我认为我的 requirements.txt 可能缺少某些内容,因此我也将其包含在此处以供参考:

谢谢你的帮助!

0 投票
1 回答
675 浏览

django - Django Channels 消费者消费 1 次通话两次

我正在使用 DRF 3.11.0 和 Channels 2.4.0 的组合来实现后端,它托管在 Heroku 上的 1 dyno 上,并附加了 Redis 资源。我的 React 前端有一个套接字,它成功地从后端服务器发送/接收。

我遇到了一个问题,即通过套接字发送回前端的任何消息都被发送了两次。我已经确认console.log前端只ping后端一次。我可以通过print()API 调用内部确认该函数也只调用async_to_sync(channel_layer.group_send)一次。问题来自我的消费者 - 当我使用print(self.channel_name)inside of 时share_document_via_videocall(),我可以看到两个具有不同self.channel_names 的实例被调用 (specific.AOQenhTn!fUybdYEsViaPspecific.AOQenhTn!NgtWxuiHtHBw。看起来消费者已经连接到两个单独的通道,但我不确定为什么。当我print()在我的声明中connect()只看到它通过连接过程一次。

如何确保我只连接到一个频道?

settings.py

消费者:

REST API 调用:

0 投票
1 回答
9108 浏览

django - Django 3.x - 哪个 ASGI 服务器(Uvicorn vs. Daphne)

我有一个用 Django 3 编写的简单的基于 API 的 Web 应用程序。在 Django 文档中有一个关于ASGI服务器的页面,并提到了两个选项:DaphneUvicorn。不幸的是,他们没有提供任何关于特定选择的好处的描述,所以在选择其中一个时我很困惑。

围绕两者编写 Django 应用程序有什么区别(如果有的话),是否有任何性能或稳定性问题需要注意?

基本上,使用 Uvicorn 代替 Daphne 有很大的不同吗?我的服务器在 Ubuntu 上运行,如果这很重要的话。

0 投票
1 回答
1959 浏览

python - 如何在像 hypercorn 或 uvicorn 这样的 ASGI 服务器上运行 Windows IIS?

我有一个使用 FastApi 用 Python 编写的基于 api 的 Web 应用程序,使用UvicornHypercorn进行部署。它们都是基于 ASGI 的服务器。有没有办法在此之上运行 IIS?