Django中ASGI_APPLICATION和WSGI_APPLICATION能同时设置吗
时间: 2023-05-21 18:05:48 浏览: 64
是可以同时设置的,但是只有一个会生效,具体的选择取决于你使用的服务器和应用程序。ASGI_APPLICATION 是用于异步服务器协议的应用程序接口,而 WSGI_APPLICATION 是用于同步服务器协议的应用程序接口。如果你使用的是异步服务器,那么应该使用 ASGI_APPLICATION,否则使用 WSGI_APPLICATION。
相关问题
Django中ASGI_APPLICATION和WSGI_APPLICATION的区别和应用
ASGI_APPLICATION和WSGI_APPLICATION都是用于定义应用程序的入口点,但是它们在处理异步请求(如Websockets、长轮询等)以及并发连接方面具有不同的能力。ASGI_APPLICATION是用于ASGI服务器的入口点,WSGI_APPLICATION是用于WSGI服务器的入口点。在Django中,您可以选择使用ASGI_APPLICATION来处理异步请求和并发连接,以实现更高效的性能和更好的响应能力。
""" ASGI config for web_demo project. It exposes the ASGI callable as a module-level variable named ``application``. For more information on this file, see https://docs.djangoproject.com/en/3.2/howto/deployment/asgi/ """ import os import os from channels.auth import AuthMiddlewareStack from channels.routing import ProtocolTypeRouter, URLRouter from django.core.asgi import get_asgi_application from django.core.asgi import get_asgi_application os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'web_demo.settings') application = ProtocolTypeRouter({ # http请求使用这个 "http": get_asgi_application(), # websocket请求使用这个 })
这是一个 Django 项目的 ASGI 配置文件,用于将 ASGI callable 暴露为名为 "application" 的模块级变量。该文件使用 Channels 库提供的 AuthMiddlewareStack 和 URLRouter 中间件来处理 WebSocket 请求。ProtocolTypeRouter 则根据请求类型将请求路由到不同的处理器中,这里配置了 http 请求使用 Django 的默认 ASGI 应用程序,而 WebSocket 请求则使用 Channels 的路由器。