5
我試圖通過使用crashmail當過程在supervisord中更改狀態時設置發送電子郵件。對於需要相當多設置的默認sendmail
程序沒有運氣,我決定使用Python中的一個小腳本來發送使用SMTP的電子郵件。使用crashmail通過smtp以超類相關方式發送電子郵件
這工作得很好(我確實收到一封電子郵件,該過程狀態的變化)的第一狀態變化,但後來停止工作。我試圖改變supervisord
中的不同選項,例如buffer_size
或autorestart
,但它沒有效果。
這裏是我用來觸發supervisord
狀態更改腳本:
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")
這是通過Gmail發送電子郵件的腳本。這一個將發送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()
這裏是我的supervisord.conf
[eventlistener:crashmail]
command=crashmail -a -m [email protected] -s /home/ubuntu/mysendmail.py
events=PROCESS_STATE
buffer_size=102400
autorestart=true
沒有人有任何想法,爲什麼? 謝謝!
那奇怪的,任何想法,爲什麼它需要的是在像這樣的單獨文件?我需要實現一個非常類似的解決方案,但我可能會使用ruby – wired00