在 Heroku 上部署 asgi 和 wsgi
Deploying asgi and wsgi on Heroku
我正在尝试使用 asgi 以及现有的 wsgi 实现在 Heroku 上部署 Django Channels。我可以使用以下设置将 asgi 和 wsgi 部署到 heroku 吗?
我的过程文件:
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)
我的频道层在 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。
我正在尝试使用 asgi 以及现有的 wsgi 实现在 Heroku 上部署 Django Channels。我可以使用以下设置将 asgi 和 wsgi 部署到 heroku 吗?
我的过程文件:
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)
我的频道层在 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。