Supervisor

Supervisor - программулина для управления процессами.

Установка

Устанавливаем как питон-пакет:

pip install supervisor

Создаем конфиг, в котором, помимо настроек Supervisor, будут описываться управляемые процессы:

echo_supervisord_conf >  /etc/supervisord.conf

Создание процесса

Чтобы добавить процесс, необходимо определить секцию program в supervisord.conf:

[program:{program_name}]
process_name = {program_name}
command={command}
directory={directory}

redirect_stderr=true
user=root
autorestart=true
  • program_name - название процесса

  • command - выполняемая команда

  • directory - рабочая директория

Больше опций здесь.

Часто веб-фреймворки сами предоставляют инструкции для запуска. Помимо запуска с помощью Supervisor, описывается также nginx-проксирование, например aiohttp, gunicorn.

Выполняемая команда

Питон программы принято запускать из виртуальной среды. Чтобы не прописывать путь к виртуальной среде, можно воспользоваться pipenv:

pipenv run python scrip.py

Полный путь к запускаемому скрипту писать не нужно, так как рабочая директория определена в supervisord.conf.

Запуск и мониторинг процессов

После добавления или изменения процессов, необходимо считать изменения конфига и перезапустить процессы:

sudo supervisorctl reread
sudo supervisorctl update

Для просмотра активных процессов:

sudo supervisorctl status

Для перезапуска конкретного процесса:

sudo supervisorctl restart {process_name}

Если запущено несколько процессов (опция numprocs), то необходимо перезапустить группу процессов:

sudo supervisorctl restart {process_name}:*

Логи

Логи supervisor находятся по такому пути: /var/log/supervisor - там же можно посмотреть почему процесс имеет статус FATAL

Если все плохо

Если возникают ошибки, типа:

unix:///var/run/supervisor.sock no such file

Или что-нибудь такое:

error: <class 'socket.error'>, [Errno 2] No such file or directory: file: /usr/lib/python2.7/socket.py line: 224

То, проще всего, перезапустить supervisor:

sudo supervisord

Last updated

Was this helpful?