#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. Также стоит отметить, что мне пришлось переключиться на пользователя, который запустил процесс, чтобы убить его.