问题标签 [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.
django - Django 等待带有 @database_sync_to_async 装饰器的函数以获取多个对象抛出错误
我正在为异步功能集成 django 频道。我正在尝试在函数上使用 await 来获取用户模型的多个对象。
消费者.py
尝试从上述代码中获取用户会导致错误“您不能从异步上下文中调用它 - 使用线程或 sync_to_async。”
但是,如果我使用“UserModel.objects.all().first()”获取单个对象,一切正常。
django - Django Channel 2 with Daphne on Heroku 在启动时崩溃
我在 heroku 上使用 Channels 2 创建了一个 django 应用程序,但它在以 503 错误代码开始时崩溃。
档案:
设置.py
asgi.py
python - hypercorn:客户端证书验证
我正在尝试在 hypercorn 中启用客户端证书验证。如果重要的话,我正在使用FastAPI。文档指导我使用参数--verify-mode
并简单地说明:
对等方证书的 SSL 验证模式,请参阅 ssl.VerifyMode 枚举以获取可能的值。
我尝试了一些猜测,但得到了一个致命错误:“hypercorn: error: argument --verify-mode: Not a valid verify mode”
我摸索了一下,在项目历史中找到了这段代码:
所以我这样做是为了验证有效值(Python 3.8):
但是,试图通过0
,1
或2
to --verify-mode
all 会给出“不是有效的验证模式”错误。我可以使用--cert-reqs
警告“警告:请改用 verify_mode”来传递这些值,但它会根据我在config.py中看到的代码启动并设置SSLContext
verify_mode
值。
不幸的是,这似乎没有任何作用。GET
当我在浏览器中执行 a 或至少一个错误时,我希望被提示输入客户端证书,因为它被设置为“必需”。但相反,我得到了很好的 200 错误代码响应。
我找不到任何关于使用 hypercorn 执行此操作的好的示例、教程或文档。这里还有什么我需要做的,比如设置一些其他属性吗?任何指导表示赞赏。
django-channels - 如何使用 nginx 和 django chanels 设置 gunicorn 和 uvicorn?
我被这个问题困住了,我需要帮助。我正在尝试使用 django-channels 配置 nginx 服务器,并且我有以下配置
Nginx:
独角兽:
我使用本教程来配置 gunicorn,但是对于 websocket,我在django-channel 网站上读到,我必须使用主管设置 daphne,我不知道如何也找不到如何做到这一点。有人可以帮助我提供一些有关如何执行此操作的教程或提示,或者有人可以向我解释需要什么主管吗?我读到 uvicorn 很容易使用 gunicorn 和 django-chanels 安装和配置,但我还是没有发现如何做到这一点。
graphene-django - 从 Uvicorn 运行时,Django 石墨烯 GraphiQL 页面未加载
不知道我设置错了什么,但在 uvicorn 中运行时我没有得到 graphiql 界面uvicorn mysite.asgi:application
:
但是当我这样做时它加载得很好python manage.py runserver
这是我安装的:
在 settings.py 我有:
python - Heroku 上的 Django ASGI 部署
我想清楚地解释我应该如何在 Heroku 上部署 Django 3.x 和通道 2.x。我的 asgi.py 文件
还,
和
返回一个错误,指出没有名为 channels.asgi 的模块
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 可能缺少某些内容,因此我也将其包含在此处以供参考:
谢谢你的帮助!
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_name
s 的实例被调用 (specific.AOQenhTn!fUybdYEsViaP
和specific.AOQenhTn!NgtWxuiHtHBw
。看起来消费者已经连接到两个单独的通道,但我不确定为什么。当我print()
在我的声明中connect()
只看到它通过连接过程一次。
如何确保我只连接到一个频道?
在settings.py
:
消费者:
REST API 调用: