Estoy tratando de implementar Django Channels en Heroku usando asgi junto con mi implementación wsgi existente. ¿Puedo implementar asgi y wsgi en heroku con la siguiente configuración?
Mi perfil:
web: gunicorn chatbot.wsgi --preload --log-file - daphne: daphne chat.asgi:channel_layer --port $PORT --bind 0.0.0.0 -v2 chatworker: python manage.py runworker --settings=chat.settings -v2Mi archivo asgi.py:
import os from channels.asgi import get_channel_layer os.environ.setdefault("DJANGO_SETTINGS_MODULE", "chat.settings") channel_layer = get_channel_layer()Mi archivo wsgi.py:
import os from django.core.wsgi import get_wsgi_application from whitenoise.django import DjangoWhiteNoise os.environ.setdefault("DJANGO_SETTINGS_MODULE", "chat.settings") application = get_wsgi_application() application = DjangoWhiteNoise(application)Y mis capas de canal en settings.py:
CHANNEL_LAYERS = { 'default': { "BACKEND": "asgi_redis.RedisChannelLayer", "CONFIG": { "hosts": [os.environ.get('REDIS_URL', 'redis://localhost:6379')] }, 'ROUTING': 'chat.routing.channel_routing', } }Resolví esto, en caso de que esto pueda ser relevante para alguien más. Usar solo asgi fue la mejor solución. Mi perfil termino siendo:
web: daphne chat.asgi:channel_layer --port $PORT --bind 0.0.0.0 -v2 chatworker: python manage.py runworker --settings=chat.settings -v2Como solución para entregar archivos estáticos, actualicé mi archivo routing.py para incluir un StaticFileConsumer.