hap*_*set 4 django wsgi gunicorn django-channels
我们在 WSGI 模式下运行相同的 django 项目来处理 HTTP 请求,并在 ASGI 模式下处理 WebSockets。对于 WSGI 模式,我们使用gunicorn3服务器:
gunicorn3 --pythonpath . -b 0.0.0.0:8000 chat_bot.wsgi:application
Run Code Online (Sandbox Code Playgroud)
对于 ASGI 模式,我们使用daphne服务器:
daphne --root-path . -b 0.0.0.0 -p 8001 chat_bot.asgi:application
Run Code Online (Sandbox Code Playgroud)
如何以编程方式检测当前运行GreenUnicorn+WSGI或Daphne+ASGI 的模式?
一种可能:
在您的wsgi.py文件中,您可以将环境变量设置为一个您不会在其他任何地方设置的值:
os.environ.setdefault('SERVER_GATEWAY_INTERFACE', 'Web')
Run Code Online (Sandbox Code Playgroud)
然后在里面asgi.py将它设置为不同的变量:
os.environ.setdefault('SERVER_GATEWAY_INTERFACE', 'Asynchronous')
Run Code Online (Sandbox Code Playgroud)
然后在代码的其他部分,只需检查环境变量:
if os.environ.get('SERVER_GATEWAY_INTERFACE') == 'Web':
# WSGI, do something
else:
# ASGI, do something else
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1497 次 |
| 最近记录: |