2016-03-01 25 views
5

我試圖通過使用crashmail當過程在supervisord中更改狀態時設置發送電子郵件。對於需要相當多設置的默認sendmail程序沒有運氣,我決定使用Python中的一個小腳本來發送使用SMTP的電子郵件。使用crashmail通過smtp以超類相關方式發送電子郵件

這工作得很好(我確實收到一封電子郵件,該過程狀態的變化)的第一狀態變化,但後來停止工作。我試圖改變supervisord中的不同選項,例如buffer_sizeautorestart,但它沒有效果。

這裏是我用來觸發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 

沒有人有任何想法,爲什麼? 謝謝!

回答

2

我感動eventlistener部分到一個單獨的文件中/etc/supervisor/conf.d(而不是在supervisord.conf年底投入),現在一切工作正常...

+0

那奇怪的,任何想法,爲什麼它需要的是在像這樣的單獨文件?我需要實現一個非常類似的解決方案,但我可能會使用ruby – wired00

相關問題