J'utilise les canaux de django dans mon projet en utilisant les canaux officiels de django. channels v2
Mon application simple sur les canaux est terminée et fonctionne correctement si elle est exécutée. python manage.py runserver
mais je veux faire fonctionner les canaux de django dans un port différent et j'utilise donc daphne
en utilisant daphne
my_project.asgi:application --port 8001
il fonctionne correctement sur le port 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)
et j'exécute également python manage.py runserver
dans un autre terminal en parallèle fonctionne bien. maintenant mes deux canaux en 8001
et django dans 8000
Le port fonctionne correctement mais ma commande runserver exécute ASGI/Channels au lieu du serveur de développement wsgi,
Starting ASGI/Channels version 2.2.0 development server at http://127.0.0.1:8000/
au lieu de
Starting development server at http://127.0.0.1:8000/
settings.py
ASGI_APPLICATION = 'my_project.routing.application'
WSGI_APPLICATION = 'my_project.wsgi.application'
Si je débogue une fonction dans views.py
il s'agit d'une requête ASGI au lieu d'une requête 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()
ma question est la suivante :
- comment obtenir une requête django au lieu d'une requête ASGI dans notre requête de vue de fonction normale (comme
def index(request)
) ou si nous installons les canaux django, chaque requête devient une requête ASGI ? - Quelle est l'utilité de la commande python mange.py runworker ?