Развертывание на Heroku для Django с каналами не удалось
Я пытаюсь развернуть на Heroku Django, но это не работает, и некоторые журналы отображаются. Я в растерянности, потому что не знаю причины. Мне интересно, может ли кто-нибудь подсказать, что мне делать, или дать несколько советов...
Журналы героку (веб)
django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
журналы хероку (рабочий)
unicodeerror: label empty or too long
backend(имя проекта)/asgi.py
import os
import api.routing
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend.settings')
django.setup()
from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
from channels.security.websocket import OriginValidator
from django.core.asgi import get_asgi_application
application = ProtocolTypeRouter({
'http': get_asgi_application(),
'websocket': OriginValidator(
AuthMiddlewareStack(
URLRouter(
api.routing.websocket_urlpatterns,
)
),
[
'http://localhost:3000',
'http://127.0.0.1:3000'
]
)
backend(имя проекта)/wsgi.py
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend.settings')
django.setup()
from dj_static import Cling
from django.core.wsgi import get_wsgi_application
application = Cling(get_wsgi_application())
backend(имя проекта)/setting.py(отрывок)
.
.
.
WSGI_APPLICATION = 'backend.wsgi.application'
ASGI_APPLICATION = 'backend.asgi.application'
CHANNEL_LAYERS = {
'default': {
'BACKEND': 'channels_redis.core.RedisChannelLayer',
'CONFIG': {
"hosts": [(env('REDIS_URL'), env('REDIS_PORT'))],
},
},
}
.
.
.
Procfile
release: python manage.py migrate
web: daphne backend.asgi:application --port $PORT --bind 0.0.0.0 -v2
worker: python manage.py runworker channels --settings=backend.settings -v2
manage.py
import os
import sys
import django
def main():
"""Run administrative tasks."""
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend.settings')
django.setup()
try:
from django.core.management import execute_from_command_line
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc
execute_from_command_line(sys.argv)
if __name__ == '__main__':
main()