[英]Deploying django channels on heroku
我用 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
這導致 module not found enigma.settings 錯誤。
我也試過
cd enigma && daphne enigma.asgi:channel_layer --port 8888
這導致 Django 應用程序未准備好錯誤。
我還嘗試將 Procfile 和 pipfiles 移動到項目目錄並部署該子目錄,但我再次遇到應用程序未就緒錯誤。
我現在已經開始臨時使用
cd enigma && python manage.py runserver 0.0.0.0:$PORT
但我知道你不應該在生產中這樣做。
嘗試這個:
檔案
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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.