Django - How to check if server is running in ASGI or in WSGI mode?
我们正在WSGI模式下运行同一个django项目,以处理HTTP请求,而在ASGI模式下运行同一个Django项目,以处理WebSocket。对于WSGI模式,我们使用gunicorn3服务器:
1 | gunicorn3 --pythonpath . -b 0.0.0.0:8000 chat_bot.wsgi:application |
对于ASGI模式,我们正在使用daphne服务器:
1 | daphne --root-path . -b 0.0.0.0 -p 8001 chat_bot.asgi:application |
如何以编程方式检测当前正在运行哪种模式的GreenUnicorn WSGI或Daphne ASGI?
一种可能性:
在
1 | os.environ.setdefault('SERVER_GATEWAY_INTERFACE', 'Web') |
然后在
1 | os.environ.setdefault('SERVER_GATEWAY_INTERFACE', 'Asynchronous') |
然后在代码的其他部分,只需检查环境变量:
1 2 3 4 | if os.environ.get('SERVER_GATEWAY_INTERFACE') == 'Web': # WSGI, do something else: # ASGI, do something else |