Python 在heroku上部署django通道

Python 在heroku上部署django通道,python,django,heroku,django-channels,daphne,Python,Django,Heroku,Django Channels,Daphne,我已经用startproject、startapp等创建了一个标准的django应用程序,我想在heroku上部署它。当我使用gunicorn时,我解决了目录问题,如下所示: web:gunicorn--pythonpath enigma enigma.wsgi 使用--pythonpath选项。但现在我用的是django频道,所以是daphne。有等效的吗?我什么都试过了,但我这辈子都无法启动这个项目。我总是遇到设置文件、未加载的应用程序或其他与cwd相关的问题 正如Heroku Djang

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

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

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

daphne enigma.asgi:通道层——8888端口
这导致asgi和设置出现各种模块未找到错误

我也试过了

daphne enigma.enigma.asgi:channel_层——端口8888
这导致模块未找到enigma.settings错误

我也试过了

cd enigma&&daphne enigma.asgi:channel_层——端口8888
这导致Django应用程序未就绪错误

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

我现在已经开始临时使用

cd enigma&&python manage.py运行服务器0.0.0.0:$PORT
但我知道你不应该在生产中这样做。

试试这个:

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')],
            },
        },
    }
import os, django
from channels.routing import get_default_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'enigma.settings')
django.setup()
application = get_default_application()
asgi.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')],
            },
        },
    }
import os, django
from channels.routing import get_default_application

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

您为daphne尝试了什么?错误是什么?我在编辑中描述了我的一些尝试。不幸的是,这不起作用,因为它找不到子目录中的设置和asgi。但如果我没有弄错的话,它也和heroku.com上的教程一样。