python - 在 Heroku 上部署 asgi 和 wsgi

标签 python django heroku wsgi channels

我正在尝试使用 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 层:

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/

相关文章:

Python 将值写入dbf文件

FTP 挂起/421 超时的 Python 错误处理

当表单类只有一个字段时,Django Formset is_valid 返回 "True",尽管该字段为空

django - 将 Django 模型输出为表格

python - 如何将 Excel 工作表另存为 CSV

python - setdefault() 没有关键字参数

jquery - 将 django HttpResponse 作为文件返回,而不是 $.ajax() post 中的普通响应正文

heroku - 在 Heroku 上部署错误 H14(未运行 Web 进程)

sql - Node.js SQL Server 代码似乎有误,但仍然有效?

java - 向 Heroku Node js 应用程序发送 httprequest 在客户端出现 "connection refused"错误