与主管一起设置 pipenv

set up pipenv with supervisor

我想部署开发服务器,但我无法启动 celery 和 gunicorn。我正在为我的目的使用脚本

celery.sh

#!/bin/bash 
cd /home/dev/app
pipenv run celery -A config worker -B -l info

和 start.sh 用于 gunicorn

#!/bin/bash
cd /home/dev/app
pipenv run gunicorn config.wsgi:application -b 127.0.0.1:8005 -w 2 -t 60 \

    --env DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE \

    --env DSN=$SENTRY_DSN \

    --env DATABASE_URL=$DATABASE_URL \

    --log-file - \

    --error-logfile /home/dev/app/errors.log 

这也是我的主管配置

[program:back]
directory=/home/dev/app/
command=/home/dev/bin/start
user=dev
autostart=true
autorestart=true
redirect_stderr=true
stopsignal=QUIT
stopasgroup=true
killasgroup=true


[program:celery]
directory=/home/dev/app/
command=/home/dev/bin/celery
user=dev
autostart=true
autorestart=true
redirect_stderr=true
stopsignal=QUIT
stopasgroup=true
killasgroup=true

当我 运行 sudo supervisorctl start celery 时,出现以下错误: /home/dev/bin/celery: line 3: pipenv: command not found

我还按照 pipenv 文档所述添加了以下行 (https://pipenv.readthedocs.io/en/latest/diagnose/)

[supervisord]
environment=LC_ALL='en_US.UTF-8',LANG='en_US.UTF-8'

更新

更改了我的主管配置:

[program:back]
directory=/home/dev/app/
command=pipenv run gunicorn config.wsgi:application --bind 127.0.0.1:8005
user=dev
autostart=true
autorestart=true
redirect_stderr=true
stopsignal=QUIT
stopasgroup=true
killasgroup=true


[program:celery]
directory=/home/dev/app/
command=pipenv run celery -A config:celery_app worker -B -l info
user=dev
autostart=true
autorestart=true
redirect_stderr=true
stopsignal=QUIT
stopasgroup=true
killasgroup=true

现在我收到一个错误:

back: ERROR (no such file)

in your config file. change command= to bash -c followed by the full path and file to execute this should do the trick

您需要给出 gunicorn 的明确路径。虽然我不确定 pipenv,但你得到的错误是因为主管试图在目录中找到 gunicorn。您应该将配置文件更改为如下内容:

[program:back]
directory=/home/dev/app/
command=/path/to/pipenv run /path/to/gunicorn config.wsgi:application --bind 127.0.0.1:8005

然后您必须重新启动您的 supervisord 才能加载设置。

sudo service supervisord reload