我正在尝试使用asgi以及现有的wsgi实现在Heroku上部署Django channel 。我可以通过以下设置将asgi和wsgi都部署到heroku吗?

我的procfile:

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 -v2

我的asgi.py文件:
import os
from channels.asgi import get_channel_layer

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "chat.settings")

channel_layer = get_channel_layer()

我的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)

我的 channel 在settings.py中分层:
CHANNEL_LAYERS = {
    'default': {
        "BACKEND": "asgi_redis.RedisChannelLayer",
        "CONFIG": {
            "hosts": [os.environ.get('REDIS_URL', 'redis://localhost:6379')]
        },
        'ROUTING': 'chat.routing.channel_routing',
    }
}

最佳答案

弄清楚这一点,以防可能与其他任何人有关。仅使用asgi是最好的解决方案。我的procfile结束了:

web: daphne chat.asgi:channel_layer --port $PORT --bind 0.0.0.0 -v2
chatworker: python manage.py runworker --settings=chat.settings -v2

作为提供静态文件的解决方案,我更新了routing.py文件以包含StaticFileConsumer。

关于python - 在Heroku上部署asgi和wsgi,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43741696/

10-11 08:59