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=trueprogram_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 supervisordLast updated
Was this helpful?