web-dev-qa-db-fra.com

Impossible d'importer le module ASGI_APPLICATION lorsque runserver utilise les canaux 2

J'ai suivi le didacticiel des canaux, mais lors de l'exécution de ces messages d'erreur

La version des packages est canaux == 2.1.2Django == 2.0.4

ce que j'ai raté? dans settings.py

INSTALLED_APPS = [
   "channels"
    ....
]

ROOT_URLCONF = 'myapp.urls'
ASGI_APPLICATION = "myapp.routing.application"

fichier ajouté mayapp/routing.py

from channels.routing import ProtocolTypeRouter 

application = ProtocolTypeRouter({
    # Empty for now (http->Django views is added by default)
})

c'est le journal des erreurs

System check identified no issues (0 silenced).
August 01, 2018 - 13:11:42
Django version 2.0.4, using settings 'myapp.local_settings'
Starting ASGI/Channels version 2.1.2 development server at http://127.0.0.1:8080/
Quit the server with CONTROL-C.
Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x7f71ecfb6400>
Traceback (most recent call last):
  File "/home/vkchlt0192/myapp/lib/python3.5/site-packages/channels/routing.py", line 33, in get_default_application
    module = importlib.import_module(path)
  File "/home/vkchlt0192/myapp/lib/python3.5/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 986, in _gcd_import
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 956, in _find_and_load_unlocked
ImportError: No module named 'myapp.routing'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/vkchlt0192/myapp/lib/python3.5/site-packages/Django/utils/autoreload.py", line 225, in wrapper
    fn(*args, **kwargs)
  File "/home/vkchlt0192/myapp/lib/python3.5/site-packages/channels/management/commands/runserver.py", line 80, in inner_run
    application=self.get_application(options),
  File "/home/vkchlt0192/myapp/lib/python3.5/site-packages/channels/management/commands/runserver.py", line 105, in get_application
    return StaticFilesWrapper(get_default_application())
  File "/home/vkchlt0192/myapp/lib/python3.5/site-packages/channels/routing.py", line 35, in get_default_application
    raise ImproperlyConfigured("Cannot import ASGI_APPLICATION module %r" % path)
Django.core.exceptions.ImproperlyConfigured: Cannot import ASGI_APPLICATION module 'myapp.routing'
8
Shihabudheen K M

Changez juste

ASGI_APPLICATION = mysite.routing.application

à

ASGI_APPLICATION = "routing.application"

1
Shersha Fn

Recherchez d'éventuelles erreurs (peut-être une erreur d'importation) dans consommateurs.py. Essayez également de placer les chaînes comme premier élément dans INSTALLED_APPS dans settings.py.

Comme indiqué dans le document des canaux:

Le serveur de développement de canaux entrera en conflit avec toute autre application tierce nécessitant une commande runserver surchargée ou de remplacement. Un exemple d'un tel conflit est avec whitenoise.runserver_nostatic de whitenoise. Afin de résoudre ces problèmes, essayez de déplacer les chaînes vers le haut de votre INSTALLED_APPS ou supprimez complètement l'application incriminée.

0
Bharat Rajani

J'avais aussi le même problème, j'ai tout fait pour le résoudre, en créant un autre environnement virtuel et en installant une ancienne version de Django mais après 2 jours de matériel, j'ai réalisé que mon fichier consumer.py était manquant avec juste un 's' dans le consommateur 'et après cela j'ai également corrigé dans mon fichier routing.py. Cela peut être votre problème aussi veuillez d'abord vérifier tous les noms de fichiers.

0

Vous devez mettre votre routing.py fichier à l'intérieur mayapp/mayapp/routing.py au lieu de mayapp/routing.py

0
wint3rmute

dans mon cas, il y avait des packages non résolus dans consumer.py, vérifiez si vous avez des packages non résolus dans vos fichiers .py de canaux

0
Mawardy

Au cas où quelqu'un viendrait avec ça. Rappelez-vous: ASGI_APPLICATION = "myapp.routing.application" devrait aller au bas de settings.py pour vous assurer que rien ne soit accroché en production!

mysite/myapp/routing.py

from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
import myapp.routing

application = ProtocolTypeRouter({
    # (http->Django views is added by default)
    'websocket': AuthMiddlewareStack(
        URLRouter(
            myapp.routing.websocket_urlpatterns
        )
    ),
})

myapp/routing.py

from Django.urls import path
from . import consumers

websocket_urlpatterns = [
    path('chatroompage', consumers.ChatConsumer),
]
0
Jay