如何使用主管和gunicorn或daphne运行django应用程序频道

时间:2018-09-16 16:19:04

标签: django gunicorn supervisor django-channels daphne

我的主管配置存在问题,当我使用以下两个代码运行应用程序时,我的应用程序使用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 :(得分:1)

您的django应用程序可与其开发服务器一起使用,因为该服务器可以为您处理http和websocket请求。现在看来,您的问题出在生产上,而gunicorn无法满足这两个要求,因此达芙妮开始发挥作用。

解决该问题的一种方法是在另一个文件中启动daphne ASGI,该文件包含-exec daphne -b 0.0.0.0 -p 8001 $ DJANGO_ASGI_MODULE:application(请注意此处使用的不同端口),两者的其他部分文件应该非常相似。最近,您可以参考它以获取更多信息,或者看看是否有必要放弃unix套接字(对我有用):https://github.com/django/channels/issues/919#issuecomment-422346729

完成此操作后,请与主管集成,以使您的运行变得简单而稳定。