Как автоматически перезапустить программу на Python после ее завершения? Supervisord?
У меня есть программа на Python, которую я хотел бы постоянно запускать обновления и собирать новые данные. По сути, я собираю данные из нескольких доменов. Мои процессоры работают около полутора дней. Как только они закончат, я бы хотел, чтобы они автоматически начали все заново.
Я не хочу использовать while
цикл просто перезапускает процессы, не убивая сначала все, что связано, потому что некоторые пакеты, которые я использую для поддержки этих процессоров (в основном, pyV8), имеют проблему с медленным накоплением памяти, и я не достаточно хороший программист, чтобы погрузиться в отладку памяти утечка в большой упаковке, как это. Итак, мне нужны все связанные процессы, чтобы успешно умереть, а затем вернуться к жизни.
Я слышал что supervisord
может выполнять эту работу, но не любит возиться с .conf
файлы и предпочел бы хранить все внутри Python.
Описание: есть ли пакет, который убьет все связанные процессы с помощью скрипта / пакета, который я мог бы использовать, чтобы поместить в цикл while или создать такое поведение внутри скрипта python?
1 ответ
Я не понимаю, почему вы не могли использовать supervisord
, Конфигурация действительно простая и очень гибкая, и она не ограничивается программами на Python.
Например, вы можете создать файл /etc/supervisor/conf.d/myprog.conf
:
[program:myprog]
command=/opt/myprog/bin/myprog --opt1 --opt2
directory=/opt/myprog
user=myuser
Затем перезагрузите конфигурацию супервизора:
$ sudo supervisorctl reload
и это включено. Разве это не достаточно просто?
Больше о supervisord
конфигурация: http://supervisord.org/subprocess.html