Не удается убить процессы сельдерея, запущенные супервизором

#celery #supervisord

#сельдерей #супервизор

Вопрос:

Я использую VPS в Digital Ocean с Ubuntu 14.04.

Я настраиваю супервизор на запуск сценария bash для экспорта переменных среды, а затем запускаю celery:

 #!/bin/bash

DJANGODIR=/webapps/myproj/myproj

# Activate the virtual environment
cd $DJANGODIR
source ../bin/activate

export REDIS_URL="redis://localhost:6379"

...

celery -A connectshare worker --loglevel=info --concurrency=1
 

Теперь я заметил, что супервизор, похоже, не убивает эти процессы, когда я выполняю остановку supervisorctl. Кроме того, когда я пытаюсь вручную убить процессы, они не остановятся. Как я могу настроить лучший сценарий для супервизора и как я могу убить запущенные процессы?

Ответ №1:

Вы должны stopasgroup=true настроить параметр в supervisord.conf файле.

Потому что вы просто убиваете не только родительский процесс, но и дочерний процесс.

Комментарии:

1. Сработало для меня, но вместо добавления в supervisord.conf мне пришлось добавить его в [program:] configs в conf.d .

2. @elGEoRgETheKiLLa Да. Хотелось бы, чтобы это помогло вам разобраться.

Ответ №2:

Отправка kill -9 должна убить процесс. Если supervisorctl stop это не останавливает ваш процесс, вы можете попробовать установить stopsignal одно из других значений, например QUIT или KILL .

Вы можете увидеть больше в документации супервизора.

Комментарии:

1. Также стоит отметить, что мне пришлось переключиться на пользователя, который запустил процесс, чтобы убить его.