我尝试使用supervisord在crashmail中更改状态时尝试设置发送电子邮件。对于需要大量设置的默认sendmail
程序没有运气,我决定使用Python中的一个小脚本,使用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("user@gmail.com", "password")
return smtpserver
if __name__ == '__main__':
import sys
data = sys.stdin.read()
s = get_server()
s.sendmail('from@gmail.com', ['myemail@fitle.com'], data)
s.quit()
这是我的supervisord.conf
[eventlistener:crashmail]
command=crashmail -a -m myemail@gmail.com -s /home/ubuntu/mysendmail.py
events=PROCESS_STATE
buffer_size=102400
autorestart=true
有谁知道为什么? 谢谢!
答案 0 :(得分:2)
我已将eventlistener
部分移到/etc/supervisor/conf.d
中的单独文件中(而不是放在supervisord.conf
的末尾),现在一切都按预期工作了......