Ich versuche, die E-Mail senden, wenn ein Prozess den Status in supervisord mit crashmail ändert. Da ich kein Glück mit dem Standardprogramm sendmail
hatte, das ziemlich viel Setup benötigt, entschied ich mich, mit einem kleinen Skript in Python zu arbeiten, das E-Mails über SMTP versendet.Senden Sie E-Mail über SMTP in SuperLance mit Crashmail
Dies funktionierte sehr gut (ich erhielt tatsächlich eine E-Mail, die besagt, dass sich der Prozesszustand ändert) für die erste Zustandsänderung, aber hör auf, danach zu arbeiten. Ich habe versucht, verschiedene Optionen in supervisord
wie buffer_size
oder autorestart
zu ändern, aber es hat keine Wirkung.
Hier ist das Skript Ich verwende die supervisord
Zustandsänderungen auslösen:
import time
from datetime import datetime
if __name__ == '__main__':
print(">>>>> STARTING ...", flush=True)
while True:
print("sleep now:", datetime.utcnow(), flush=True)
time.sleep(30)
raise Exception("meo meo")
Dies ist das Skript, das E-Mail über Google Mail sendet. Dieser sendet die stdin
.
#!/usr/bin/env python
import smtplib
def get_server():
smtpserver = smtplib.SMTP('smtp.gmail.com:587')
smtpserver.ehlo()
smtpserver.starttls()
smtpserver.login("[email protected]", "password")
return smtpserver
if __name__ == '__main__':
import sys
data = sys.stdin.read()
s = get_server()
s.sendmail('[email protected]', ['[email protected]'], data)
s.quit()
Hier ist meine supervisord.conf
[eventlistener:crashmail]
command=crashmail -a -m [email protected].com -s /home/ubuntu/mysendmail.py
events=PROCESS_STATE
buffer_size=102400
autorestart=true
Hat warum eine Idee jemand? Danke!
Das ist seltsam, eine Idee, warum es in einem sein, benötigt separate Datei so? Ich muss eine sehr ähnliche Lösung implementieren, werde aber wahrscheinlich Ruby verwenden – wired00