簡體   English   中英

在 heroku 上部署 django 通道

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM