在heroku上部署Django通道

2024-05-20 10:59:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经用startproject、startapp等创建了一个标准的django应用程序,我想在heroku上部署它。当我使用gunicorn时,我解决了目录问题,如下所示:

web: gunicorn --pythonpath enigma enigma.wsgi

使用--pythonpath选项。但现在我用的是django频道,所以是daphne。有等效的吗?我什么都试过了,但我这辈子都无法启动这个项目。我总是遇到设置文件、未加载的应用程序或其他与cwd相关的问题

正如Heroku Django频道教程中所述,我尝试过:

daphne enigma.asgi:channel_layer --port 8888

这导致asgi和设置出现各种模块未找到错误

我也试过了

daphne enigma.enigma.asgi:channel_layer --port 8888

这导致模块未找到enigma.settings错误

我也试过了

cd enigma && daphne enigma.asgi:channel_layer --port 8888

这导致Django应用程序未就绪错误

我还尝试将Procfile和pipfiles移动到project目录并部署该子目录,但再次出现apps not ready错误

我现在已经开始临时使用

cd enigma && python manage.py runserver 0.0.0.0:$PORT

但我知道你不应该在生产中这样做


Tags: django目录layer应用程序port部署错误channel
1条回答
网友
1楼 · 发布于 2024-05-20 10:59:36

试试这个:

Procfile

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

设置.py

if DEBUG:
    CHANNEL_LAYERS = {
        "default": {
            "BACKEND": "channels_redis.core.RedisChannelLayer",
            "CONFIG": { 
                "hosts": [("localhost", 6379)],
            },
        },
    }
else:
    CHANNEL_LAYERS = {
        "default": {
            "BACKEND": "channels_redis.core.RedisChannelLayer",
            "CONFIG": { 
                "hosts": [os.environ.get('REDIS_URL', 'redis://localhost:6379')],
            },
        },
    }

asgi.py

import os, django
from channels.routing import get_default_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'enigma.settings')
django.setup()
application = get_default_application()

相关问题 更多 >