如何与主管和gunicorn或daphne一起运行app django频道

如何与主管和gunicorn或daphne一起运行app django频道,django,gunicorn,supervisord,django-channels,daphne,Django,Gunicorn,Supervisord,Django Channels,Daphne,我有一个问题,我的配置从主管,我的应用程序是使用django_通道好,当我运行我的应用程序使用以下两个代码 运转良好 (myenv)/colonybit/colonybitbasics/python manage.py runserver 0.0.0.0:8000 或 我在vuejs中还有其他应用程序,上面的代码正在运行,但当我尝试使用下面的代码运行我的应用程序时,如下所示 (myenv)/colonybit/ ./bin/start.sh 我的文件start.sh NAME="colony

我有一个问题,我的配置从主管,我的应用程序是使用django_通道好,当我运行我的应用程序使用以下两个代码 运转良好

(myenv)/colonybit/colonybitbasics/python manage.py runserver 0.0.0.0: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_频道中共享我的应用程序

请告诉我,如何配置我的文件start.sh以使用ASGI


谢谢您的时间。

您的django应用程序与其开发服务器配合使用,因为该服务器为您处理http和websocket请求。现在看来,您的问题在于生产,而gunicorn无法处理这两个请求,所以daphne来了

解决这个问题的一种方法是在另一个文件中启动daphne ASGI,该文件包含-exec daphne-b0.0.0-p8001$DJANGO_ASGI_模块:应用程序(注意此处使用的端口不同),这两个文件的其他部分应该非常相似。最近,您可以参考本文了解更多信息,或者了解是否有必要放弃unix套接字(这对我很有用):


完成此操作后,与主管整合,使您的跑步变得简单和稳定。

您能否详细说明:>“与主管整合,使您的跑步变得简单和稳定”您将如何做到这一点?Supervisor文档似乎不是很有用。嗨,使用Supervisor的原因是为了简化运行web服务的过程,因为我认为它只会帮助您启动/管理多个过程。在这种情况下,您需要启动两个应用服务器,可能还需要启动数据库(如redis)来调用web服务。使用supervisor,您只需将这些流程作为程序添加到supervisor组中,启动该工具,就完成了。否则,您必须为每个需要的进程运行带有config的命令/shell脚本。
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=-