Python 在heroku上部署django通道
我已经用startproject、startapp等创建了一个标准的django应用程序,我想在heroku上部署它。当我使用gunicorn时,我解决了目录问题,如下所示: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
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上的教程一样。