Проблема с выгрузкой django-channels на heroku
Как я понял из ответа команды heroku logs --tail, daphne запускается, и далее после обращения к asgi.py вызову application = get_asgi_application() все падает.
вот ответ heroku logs --tail:
2020-11-21T05:41:14.092715+00:00 heroku[web.1]: State changed from crashed to starting
2020-11-21T05:41:19.822514+00:00 heroku[web.1]: Starting process with command `daphne chatproject.chatproject.asgi:application --port 15334 --bind 0.0.0.0 -v2`
2020-11-21T05:41:22.391227+00:00 app[web.1]: 2020-11-21 05:41:22,391 INFO Adding $DATABASE_URL to default DATABASE Django setting.
2020-11-21T05:41:22.391491+00:00 app[web.1]: 2020-11-21 05:41:22,391 INFO Adding $DATABASE_URL to TEST default DATABASE Django setting.
2020-11-21T05:41:22.391609+00:00 app[web.1]: 2020-11-21 05:41:22,391 INFO Applying Heroku Staticfiles configuration to Django settings.
2020-11-21T05:41:22.391808+00:00 app[web.1]: 2020-11-21 05:41:22,391 INFO Applying Heroku ALLOWED_HOSTS configuration to Django settings.
2020-11-21T05:41:22.391914+00:00 app[web.1]: 2020-11-21 05:41:22,391 INFO Applying Heroku logging configuration to Django settings.
2020-11-21T05:41:22.394661+00:00 app[web.1]: Traceback (most recent call last):
2020-11-21T05:41:22.394668+00:00 app[web.1]: File "/app/.heroku/python/bin/daphne", line 8, in <module>
2020-11-21T05:41:22.394812+00:00 app[web.1]: sys.exit(CommandLineInterface.entrypoint())
2020-11-21T05:41:22.394831+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/daphne/cli.py", line 191, in entrypoint
2020-11-21T05:41:22.395043+00:00 app[web.1]: cls().run(sys.argv[1:])
2020-11-21T05:41:22.395046+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/daphne/cli.py", line 252, in run
2020-11-21T05:41:22.395243+00:00 app[web.1]: application = import_by_path(args.application)
2020-11-21T05:41:22.395249+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/daphne/utils.py", line 12, in import_by_path
2020-11-21T05:41:22.395358+00:00 app[web.1]: target = importlib.import_module(module_path)
2020-11-21T05:41:22.395378+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/importlib/__init__.py", line 126, in import_module
2020-11-21T05:41:22.395515+00:00 app[web.1]: return _bootstrap._gcd_import(name[level:], package, level)
2020-11-21T05:41:22.395541+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 994, in _gcd_import
2020-11-21T05:41:22.395675+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 971, in _find_and_load
2020-11-21T05:41:22.395796+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
2020-11-21T05:41:22.395886+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
2020-11-21T05:41:22.395996+00:00 app[web.1]: File "<frozen importlib._bootstrap_external>", line 678, in exec_module
2020-11-21T05:41:22.396123+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
2020-11-21T05:41:22.396216+00:00 app[web.1]: File "./chatproject/chatproject/asgi.py", line 16, in <module>
2020-11-21T05:41:22.396338+00:00 app[web.1]: application = get_asgi_application()
2020-11-21T05:41:22.396339+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/asgi.py", line 12, in get_asgi_application
2020-11-21T05:41:22.396441+00:00 app[web.1]: django.setup(set_prefix=False)
2020-11-21T05:41:22.396461+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/__init__.py", line 24, in setup
2020-11-21T05:41:22.396573+00:00 app[web.1]: apps.populate(settings.INSTALLED_APPS)
2020-11-21T05:41:22.396575+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/apps/registry.py", line 91, in populate
2020-11-21T05:41:22.396723+00:00 app[web.1]: app_config = AppConfig.create(entry)
2020-11-21T05:41:22.396725+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/apps/config.py", line 90, in create
2020-11-21T05:41:22.396874+00:00 app[web.1]: module = import_module(entry)
2020-11-21T05:41:22.396875+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/importlib/__init__.py", line 126, in import_module
2020-11-21T05:41:22.397018+00:00 app[web.1]: return _bootstrap._gcd_import(name[level:], package, level)
2020-11-21T05:41:22.397037+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 994, in _gcd_import
2020-11-21T05:41:22.397173+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 971, in _find_and_load
2020-11-21T05:41:22.397245+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
2020-11-21T05:41:22.397332+00:00 app[web.1]: ModuleNotFoundError: No module named 'core'
2020-11-21T05:41:22.550040+00:00 heroku[web.1]: Process exited with status 1
2020-11-21T05:41:22.589401+00:00 heroku[web.1]: State changed from starting to crashed
routing.py в корневой директории проекта
from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
from channels.security.websocket import AllowedHostsOriginValidator
import core.routing
application = ProtocolTypeRouter({
'websocket': AllowedHostsOriginValidator(
AuthMiddlewareStack(
URLRouter(
core.routing.websocket_urlpatterns
)
),
),
})
asgi.py
import os
from django.core.asgi import get_asgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'chatproject.chatproject.settings')
application = get_asgi_application()
Procfile
web: daphne chatproject.chatproject.asgi:application --port $PORT --bind 0.0.0.0 -v2
структура проекта (так как я думаю что возможен неправильный импорт)
.
├── chatproject
│ ├── asgi.py
│ ├── __init__.py
│ ├── routing.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── core
│ ├── admin.py
│ ├── apps.py
│ ├── consumers.py
│ ├── forms.py
│ ├── __init__.py
│ ├── migrations
│ │ ├── 0001_initial.py
│ │ ├── 0002_remove_room_owner.py
│ │ ├── 0003_remove_profile_image.py
│ │ └── __init__.py
│ ├── models.py
│ ├── routing.py
│ ├── signals.py
│ ├── templates
│ │ └── core
│ │ ├── index.html
│ │ ├── room.html
│ │ └── users
│ │ ├── login.html
│ │ ├── logout.html
│ │ ├── profile.html
│ │ └── register.html
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── db.sqlite3
├── manage.py
├── static-files
│ ├── favicon.ico
│ ├── main.js
│ ├── rsocket.js
│ └── style.css
├── staticfiles
└── templates
└── base.html
Ошибка выглядит так как будто я неправильно импортировал core модуль routings.py корневой директории проекта. но изменения этого импорта приводит к ошибке. замечу что на localhost все работает.