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?