0

我的主管配置有问题,我的应用程序使用 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

谢谢你的时间。

4

1 回答 1

1

您的 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

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

于 2018-09-24T23:00:13.860 回答