Python 使用crashmail在superlance中通过smtp发送电子邮件

Python 使用crashmail在superlance中通过smtp发送电子邮件,python,email,sendmail,supervisord,Python,Email,Sendmail,Supervisord,我正在尝试使用设置当进程更改状态时发送电子邮件。由于默认的sendmail程序需要大量设置,因此我决定使用Python中的一个小脚本,使用SMTP发送电子邮件 这在第一次状态更改时效果非常好(我确实收到了一封电子邮件,说进程状态发生了更改),但之后停止工作。我尝试更改supervisord中的不同选项,例如buffer\u size或autorestart,但没有效果 下面是我用来触发supervisord状态更改的脚本: import time from datetime import da

我正在尝试使用设置当进程更改状态时发送电子邮件。由于默认的
sendmail
程序需要大量设置,因此我决定使用Python中的一个小脚本,使用SMTP发送电子邮件

这在第一次状态更改时效果非常好(我确实收到了一封电子邮件,说进程状态发生了更改),但之后停止工作。我尝试更改
supervisord
中的不同选项,例如
buffer\u 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
有人知道为什么吗?
谢谢

我将
eventlistener
部分移动到
/etc/supervisor/conf.d
中的一个单独的文件中(而不是放在
supervisord.conf
的末尾),现在一切都按预期进行了…

这很奇怪,你知道为什么它需要放在一个单独的文件中吗?我需要实现一个非常类似的解决方案,我可能会使用ruby,但不适合我。我想知道如果它被移动到
conf.d
,它将如何运行。我们是否需要使用
supervisord
单独运行它?