【问题标题】:Setting up gunicorn and supervisor for django server为 django 服务器设置 gunicorn 和 supervisor
【发布时间】:2018-03-27 00:43:39
【问题描述】:

我正在尝试使用 gunicorn 和主管启动并运行我的服务器。 设法用这个命令把它升级:

$ gunicorn project.wsgi:application --bind 192.168.1.130:8000

之后我制作了一个 gunicorn_init.bash 文件。我从几个教程中获得了代码。所以猜猜这​​是设置 gunicorn 和 supervisor 的常用方法。代码如下所示:

#!/bin/bash

NAME="project"                                                   # Name of the application
DJANGODIR=/home/username/projects/project                    # Django project directory
SOCKFILE=/home/username/.venvs/project/run/gunicorn.sock     # We will communicate using this unix socket
USER=username                                              # the user to run as
GROUP=username                                             # the group to run as
NUM_WORKERS=1                                                   # how many worker processes shoul Gunicorn spawn
DJANGO_SETTINGS_MODULE=project.settings.production               # which settings file should Django use
DJANGO_WSGI_MODULE=project.wsgi                                  # WSGI module name
echo "Starting $NAME as `whoami`"

# Activate the virtual environment

cd $DJANGODIR
source /home/username/.venvs/project/bin/activate
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH

# Create the run directory if it doesn't exsist

RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR

# Start yout Django Unicorn
# Programs meant to be run under supervisor should not daemonize themselves (do not use daemon)

exec gunicorn ${DJANGO_WSGI_UNICORN}:application \
  --name $NAME \
  --workers $NUM_WORKERS \
  --user=$USER --group=$GROUP \
  --bind=unix:$SOCKFILE \
  --log-level=debug \
  --log-file=-

这只是给我一个例外是这样的工作进程:

[2017-10-15 12:35:37 +0200] [30218] [INFO] Starting gunicorn 19.7.1
[2017-10-15 12:35:37 +0200] [30218] [DEBUG] Arbiter booted
[2017-10-15 12:35:37 +0200] [30218] [INFO] Listening at: unix:/home/username/.venvs/project/run/gunicorn.sock (30218)
[2017-10-15 12:35:37 +0200] [30218] [INFO] Using worker: sync
[2017-10-15 12:35:37 +0200] [30223] [INFO] Booting worker with pid: 30223
[2017-10-15 12:35:37 +0200] [30223] [ERROR] Exception in worker process
Traceback (most recent call last):
  File "/home/username/.venvs/project/lib/python3.5/site-packages/gunicorn/arbiter.py", line 578, in spawn_worker
    worker.init_process()
  File "/home/username/.venvs/project/lib/python3.5/site-packages/gunicorn/workers/base.py", line 126, in init_process
    self.load_wsgi()
  File "/home/username/.venvs/project/lib/python3.5/site-packages/gunicorn/workers/base.py", line 135, in load_wsgi
    self.wsgi = self.app.wsgi()
  File "/home/username/.venvs/project/lib/python3.5/site-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
  File "/home/username/.venvs/project/lib/python3.5/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
    return self.load_wsgiapp()
  File "/home/username/.venvs/project/lib/python3.5/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
    return util.import_app(self.app_uri)
  File "/home/username/.venvs/project/lib/python3.5/site-packages/gunicorn/util.py", line 352, in import_app
    __import__(module)
ValueError: Empty module name
[2017-10-15 12:35:37 +0200] [30223] [INFO] Worker exiting (pid: 30223)
[2017-10-15 12:35:37 +0200] [30218] [INFO] Shutting down: Master
[2017-10-15 12:35:37 +0200] [30218] [INFO] Reason: Worker failed to boot.

我阅读并观看了教程。进入文档,试图弄清楚为什么在调用 gunicorn-bash 文件时它不起作用。

现在非常感谢任何指向正确方向的指针。我已经卡了很长时间了。

【问题讨论】:

    标签: python django server gunicorn


    【解决方案1】:

    您有一个不一致的变量。在脚本顶部定义DJANGO_WSGI_MODULE,但在调用gunicorn 时,您使用的是不存在的DJANGO_WSGI_UNICORN。确保使用相同的名称。

    【讨论】:

    • 我阅读代码但没有看到的次数。谢谢丹尼尔又名鹰眼
    • 不要忘记接受答案,以向未来的搜索者表明它解决了您的问题。
    猜你喜欢
    • 1970-01-01
    • 2013-10-05
    • 2020-12-26
    • 2015-08-01
    • 2013-01-04
    • 2013-03-06
    • 2017-03-13
    • 2017-02-14
    • 2014-03-31
    相关资源
    最近更新 更多