raspberry pi:没有互联网电子邮件和mysql连接

时间:2014-07-01 17:54:15

标签: python mysql email

我在覆盆子pi上创建了一个程序,它接收来自多个传感器的输入,并通过电子邮件将数据发送到远程mysql数据库。

问题在于,如果设备因为崩溃代码而失去互联网。有没有办法告诉python如果它失败了,请在这么多秒内再试一次并循环直到它重新连接?

由于

1 个答案:

答案 0 :(得分:0)

"它崩溃了代码"对于出了什么问题(最好说一段特定的代码产生特定的错误消息)并不是一个非常有用的描述。所以我假设smtplib.SMTP对象的sendmail()方法正在引发smtplib.SMTPException或其子类。

诀窍是捕获异常并重试,但你不应该永远这样做。你可能需要像

这样的东西
import smtplib
    ...
sender = smtplib.SMTP(...)
    ...
retry_count = 10
done = False
while not done:
    sender.sendmail(...)
    done = True
except smtplib.SMTPException:
    if retry_count:
        retry_count -= 1
    else:
        raise <some exception you can catch in surrounding code if necessary>

您可能还希望将time.sleep()调用放在减少重试次数的位置,因为立即重试不太可能成功。

如果异常是更基本的东西,比如套接字超时错误,则可能需要捕获它。