Как запустить приложение Django каналы с супервизором и Gunicorn или Дафни - PullRequest
0 голосов
/ 16 сентября 2018

У меня проблема с моей конфигурацией от супервизора, мое приложение хорошо использует django_channles, когда я запускаю свое приложение, используя два кода ниже работает хорошо

(myenv)/colonybit/colonybitbasics/python manage.py runserver 0.0.0.0:8000

или

(myenv)/colonybit/colonybitbasics/daphne -b 0.0.0.0 -p 8000

и у меня есть другое приложение в vuejs, код выше работает, но когда я пытаюсь запустить свое приложение с этим кодом ниже, как это

(myenv)/colonybit/ ./bin/start.sh

мой файл start.sh

NAME="colony_app"
DJANGODIR=/home/ubuntu/colonybit         # Django project directory
SOCKFILE=/home/ubuntu/colonybit/run/gunicorn.sock  
USER=ubuntu                                         # the user to run as
GROUP=ubuntu                                        # the group to run as
NUM_WORKERS=3                                       
DJANGO_SETTINGS_MODULE=colonybit.settings      
DJANGO_WSGI_MODULE=colonybit.asgi              # ASGI module name
echo "Starting $NAME as `whoami`"

# Activate the virtual environment

cd $DJANGODIR
source /home/ubuntu/colonybit/bin/activate
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH

# Create the run directory if it doesn't exist

RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR

exec colonybit ${DJANGO_WSGI_MODULE}:application \
     --name $NAME \
     --workers $NUM_WORKERS \
     --user=$USER --group=$GROUP \
     --bind=0.0.0.0:8000 \
     --log-level=debug \
     --log-file=-

сервер работает нормально, но мое приложение в vuejs, выдает ошибку 500, не может использовать мое приложение в django_channels

подскажите пожалуйста, как настроить мой файл start.sh для работы с использованием ASGI

спасибо за ваше время.

1 Ответ

0 голосов
/ 25 сентября 2018

Ваше приложение django работает со своим сервером разработки, потому что этот сервер обрабатывает для вас запросы как http, так и websocket. Похоже, ваша проблема связана с производством, и gunicorn не смог справиться с обоими запросами, поэтому Дафни начинает играть.

Лучший способ решить эту проблему - запустить daphne ASGI в другом файле, который содержит - exec daphne -b 0.0.0.0 -p 8001 $ DJANGO_ASGI_MODULE: приложение (обратите внимание на другой порт, используемый здесь), другие части двух Файлы должны быть очень похожи. В последнее время вы можете обратиться к этому для получения дополнительной информации или посмотреть, необходимо ли отказаться от unix-сокетов (это работает для меня): https://github.com/django/channels/issues/919#issuecomment-422346729

После того, как вы это сделаете, интегрируйтесь с супервизором, чтобы сделать ваш пробег простым и стабильным.

...