Там в любом случае supervisord
может автоматически перезапускать неудачное / завершенное / прерванное задание и отправить мне уведомление по электронной почте с дампом последних x строк файла журнала?
Есть плагин под названием superlance.
Вы устанавливаете его с помощью pip install superlance
или скачайте по адресу: http://pypi.python.org/pypi/superlance
Следующее, что вы сделаете, это войдете в supervisord.conf
и добавьте следующие строки:
[eventlistener:crashmail]
command=/usr/local/bin/crashmail -a -m email1@example.com
events=PROCESS_STATE
За этим должно последовать «обновление supervisorctl». Когда процесс "завершится", вы получите уведомление, отправленное на адрес email1@example.com.
Если вы хотите слушать только некоторые выбранные приложения, вы можете обменять -a
для -p program1
или если это группа group1:program2
Одним из примеров может быть
[eventlistener:crashmail]
command=/usr/local/bin/crashmail -p program1 -p group1:program2 -m email1@example.com
events=PROCESS_STATE
Относительно автоматического перезапуска: убедитесь, что autorestart
установлен на true
(установлен на unexpected
по умолчанию). Таким образом, пакет будет перезапущен 3 раза. Если после этого он все еще выходит, он сдается, но вы можете изменить это с помощью startretries
.
Пример программы:
[program:cat]
command=/bin/cat
autorestart=true
startretries=10
Я попытался установить superlance и запустить crashmail вот так:
sudo apt-get install python-pip
sudo pip install superlance
после того, как я сделаю:
sudo nano /etc/supervisor/supervisord.conf
и после того, как я добавил:
[eventlistener:crashmail]
command=/usr/local/bin/crashmail -a -m mymail@mail.fr
events=PROCESS_STATE
и я ничего не получаю ....
Мой файл аварийной почты:
#!/usr/bin/python
-- coding: utf-8 --
import re
import sys
from superlance.crashmail import main
if name == 'main':
sys.argv[0] = re.sub(r'(-script.pyw?|.exe)?$', '', sys.argv[0])
sys.exit(main())