如何 运行 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
完成此操作后,与主管集成以使您的 运行 简单而稳定。
我的主管配置有问题,我的应用程序正在使用 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
完成此操作后,与主管集成以使您的 运行 简单而稳定。