क्या कोई ऐसा तरीका है जो supervisord
स्वचालित रूप से विफल / निर्वासित / समाप्त नौकरी को फिर से शुरू कर सकता है और मुझे लॉग फ़ाइल की अंतिम x लाइनों के डंप के साथ एक अधिसूचना ईमेल भेज सकता है?
क्या कोई ऐसा तरीका है जो supervisord
स्वचालित रूप से विफल / निर्वासित / समाप्त नौकरी को फिर से शुरू कर सकता है और मुझे लॉग फ़ाइल की अंतिम x लाइनों के डंप के साथ एक अधिसूचना ईमेल भेज सकता है?
जवाबों:
एक प्लगइन है जिसे सुपरलेंस कहा जाता है।
आप इसे इसके साथ स्थापित करते हैं 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
इसके बाद "सुपरवाइजरटेक् ट अपडेट" होना चाहिए। जब एक प्रक्रिया "बाहर निकलती है" तो अब आपको 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
मैंने इस तरह से अतिशयोक्ति स्थापित करने और दुर्घटनाग्रस्त होने की कोशिश की:
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())