使用通道2运行服务器时无法导入ASGI_APPLICATION模块

Shi*_*K M 8 python django django-channels

我已按照频道指南进行操作,但是在运行这些错误抛出时

软件包的版本为 channel == 2.1.2 Django == 2.0.4

我错过了什么? 在settings.py中

INSTALLED_APPS = [
   "channels"
    ....
]

ROOT_URLCONF = 'myapp.urls'
ASGI_APPLICATION = "myapp.routing.application"
Run Code Online (Sandbox Code Playgroud)

添加的文件mayapp / routing.py

from channels.routing import ProtocolTypeRouter 

application = ProtocolTypeRouter({
    # Empty for now (http->django views is added by default)
})
Run Code Online (Sandbox Code Playgroud)

这是错误日志

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'
Run Code Online (Sandbox Code Playgroud)

Voi*_*lin 8

在我的情况下,在不同的文件中导入错误。

你应该做的是

python manage.py shell
from mysite.routing import application
Run Code Online (Sandbox Code Playgroud)

看看它产生了什么确切的错误并尝试修复它


She*_* Fn 5

只是改变

ASGI_APPLICATION = mysite.routing.application

ASGI_APPLICATION = "routing.application"


小智 5

检查consumers.py 中是否存在任何潜在错误(可能是导入错误)。另外,尝试将频道作为 settings.py 中 INSTALLED_APPS 的第一项。

正如渠道文档中所述:

Channels 开发服务器将与任何其他需要重载或替换 runserver 命令的第三方应用程序发生冲突。这种冲突的一个例子是来自whitenoise的whitenoise.runserver_nostatic。为了解决此类问题,请尝试将频道移至 INSTALLED_APPS 的顶部或完全删除有问题的应用程序。


小智 2

你需要把你的routing.py文件放在里面mayapp/mayapp/routing.py而不是mayapp/routing.py