首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >和ASGI一起跑django?

和ASGI一起跑django?
EN

Stack Overflow用户
提问于 2021-09-27 09:57:19
回答 2查看 822关注 0票数 4
  • 我有一个django应用程序
  • 我使用这个docker进行生产部署

当我运行这个应用程序时:

代码语言:javascript
复制
gunicorn --log-level debug --workers 3 myapp.asgi:application --worker-class uvicorn.workers.UvicornWorker

我看到警告了

代码语言:javascript
复制
ASGI 'lifespan' protocol appears unsupported.
  1. 在阅读了这里之后,我知道django不支持,但是这对我的应用程序有影响吗?或者效果应该是什么呢?
  2. 例如,我的应用程序正在使用同步端点:
代码语言:javascript
复制
class MyViewSet(viewsets.ModelViewSet):
    queryset = My.objects.all()
    serializer_class = MySerializer

通过使用ASGI运行,对数据库的调用是异步的吗?

  • 我不使用任何网络套接字
  1. 我可以在网上看到asgi.py文件的许多版本,使用manny不同的中间件和django.setup()关键字,在哪里可以找到关于用例的文档?
EN

回答 2

Stack Overflow用户

发布于 2021-09-27 11:33:13

代码语言:javascript
复制
exec envdir .envdir gunicorn ${DJANGO_WSGI_MODULE}:application \
  --name $NAME \
  --timeout 300 \
  --workers $NUM_WORKERS \
  --bind=unix:$SOCKFILE \
  --preload \
  -k uvicorn.workers.UvicornWorker
票数 0
EN

Stack Overflow用户

发布于 2022-01-26 14:02:33

  1. 我不认为lifespan功能应该阻止任何不使用该功能的Django应用程序。
  2. 如果在视图中使用同步代码,那么切换到ASGI不会神奇地异步生成视图。您需要围绕它的异步包装器。查看有关适配器姜戈博士sync_to_async()async_to_sync()
  3. 我从未见过django.setup()的使用。我不完全理解你的问题。asgi.py文件应该是这样的:
代码语言:javascript
复制
import os
from django.core.asgi import get_asgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'MyService.settings.local')
application = get_asgi_application()

不过,就我个人而言,在设置好这一切之后,我的观点仍然是同步的。我已经开始了这个问题:Uvicorn异步工作人员仍在同步工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69344702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档