如何 运行 app django channels with supervisor and gunicorn or daphne

how to run app django channels with supervisor and gunicorn or 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

感谢您的宝贵时间。

您的 Django 应用与其开发服务器一起工作,因为该服务器为您处理 http 和 websocket 请求。现在看来你的问题出在生产上,而 gunicorn 无法处理这两个请求,所以 daphne 开始发挥作用。

解决它的 BF 方法是在另一个文件中启动 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

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