супервизор: не может начать / перезапустить - PullRequest
0 голосов
/ 13 февраля 2020

Окружающая среда

  • руководитель: 4.1.0
  • Python: 3.6.9

Статус

Я пытаюсь демонизировать процесс сельдерея с супервизором.
Файлы конфигурации следующие.
/etc/supervisor/supervisord.conf

; supervisor config file

[unix_http_server]
file=/var/run/supervisor.sock   ; (the path to the socket file)
chmod=0700                       ; sockef file mode (default 0700)

[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor            ; ('AUTO' child log dir, default $TEMP)

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket

[include]
files = /etc/supervisor/conf.d/*.conf

/etc/supervisor/conf.d/celeryd.conf

[program:celeryd]
user=user_name
directory=/home/user_name/my_app/api/
command=celery -A v2 worker --loglevel=INFO --concurrency=10 --maxtasksperchild=5000 -Q=celery
environment=MY_APP_DEPLOY_CONFIG=production
redirect_stderr=true
stdout_logfile=/var/log/celeryd.log
autostart=true
autorestart=true

Проблема

При попытке запустить процесс возникает следующая ошибка.

$ sudo supervisorctl restart all
celeryd: ERROR (no such file)

$ sudo supervisorctl start all
celeryd: ERROR (no such file)

$ sudo supervisorctl status
celeryd                          FATAL     can't find command 'celery'

Странно то, что если я редактирую файл conf и выполняю supervisor reread, он отлично работает

$ sudo supervisorctl reread
celeryd: changed

Что мне делать?

1 Ответ

0 голосов
/ 13 февраля 2020

если вы используете virtualenv, вы должны указать полный путь к сельдерею в команде

command = /full_path_to_celery/celery -A v2 worker --loglevel=INFO --concurrency=10 --maxtasksperchild=5000 -Q=celery

, также вы, возможно, из своей пользовательской системы не можете использовать сельдерей, вы можете легко проверить это с помощью auth, используя вашего пользователя и набрав which celery если он выводит путь, у вас есть доступ к нему.

...