我正在使用官方的 Django channels v2
在我的项目中使用 Django Channels。我的简单 channels 应用程序已经完成,并且如果运行 python manage.py runserver
就可以正常工作。
使用
daphne
my_project.asgi:application --port 8001
可以在 8001 端口上正常工作。
INFO Starting server at tcp:port=8001:interface=127.0.0.1
INFO HTTP/2 support not enabled (install the http2 and tls Twisted extras)
同时我在另一个终端中运行python manage.py runserver
,它也可以正常工作。现在我的两个通道分别在端口8001
,Django在端口8000
工作良好,但是我的runserver命令正在运行ASGI/Channels而不是WSGI开发服务器。
Starting ASGI/Channels version 2.2.0 development server at http://127.0.0.1:8000/
取代
Starting development server at http://127.0.0.1:8000/
settings.py
ASGI_APPLICATION = 'my_project.routing.application'
WSGI_APPLICATION = 'my_project.wsgi.application'
如果我在
views.py
请求中调试任何函数,那么它将是ASGI请求而不是Django WSGI请求。asgi.py
import os
import django
from channels.routing import get_default_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "my_project.settings")
django.setup()
application = get_default_application()
我的问题是:
- 如何在我们的普通函数视图请求中获取Django请求而不是ASGI请求(例如
def index(request)
)?或者如果我们安装了Django Channels,每个请求都会成为ASGI请求吗? python mange.py runworker
命令的用途是什么?
WSGI_APPLICATION
对于runserver
命令是必需的。https://dev59.com/SZXfa4cB1Zd3GeqPbz3x#36107047 - pawelbylina