bugrobot用6行代码调用微信报警机器人
2023-03-20 14:44:22 时间
算法工程师常常会为监控代码而头痛,有些代码执行时间常常会长达数小时,甚至几天。
例如一些机器学习模型的训练,以及一些大数据ETL任务。
如果能够将执行过程中的一些中间重要信息发送到我们的微信上,随时随地在手机上看到程序是否正常运行,让一切都在掌握之中,
那么将会让算法工程师的许多头发免受骨肉分离,随风飘零之苦。
实际上我们通过利用Python代码发送邮件到我们的QQ邮箱,并在微信上设置QQ邮箱提醒,可以非常容易实现这个功能。
效果如下,让我们来看看怎么做吧!
一,微信设置QQ邮箱提醒
微信上点击 我->设置->通用->辅助功能->QQ邮箱提醒 开启即可。
二,用Python自动发送邮件
import smtplib
from email.mime.text import MIMEText
subject = "info@train_model.py" #邮件主题
msg = "auc=0.98" #邮件内容
receivers = ["2650115830@qq.com"] #收件人
#设置服务器所需信息
mail_host = 'smtp.yeah.net'
mail_user = 'PyRobot'
mail_pass = 'XDNCKUHPLRQFVQHA' #密码(部分邮箱为授权码)
sender = 'PyRobot@yeah.net'
message = MIMEText(msg,'plain','utf-8')
message['Subject'] = subject
message['From'] = sender
message['To'] = receivers[0]
#登录并发送邮件
try:
smtpObj = smtplib.SMTP()
#连接到服务器
smtpObj.connect(mail_host,25)
#登录到服务器
smtpObj.login(mail_user,mail_pass)
#发送
smtpObj.sendmail(
sender,receivers,message.as_string())
#退出
smtpObj.quit()
print('success')
except smtplib.SMTPException as e:
print('error',e) #打印错误
三,封装成通用函数
可以将以上代码封装成函数
import smtplib
from email.mime.text import MIMEText
subject = "info@train_model.py" #邮件主题
msg = "auc=0.98" #邮件内容
receivers = ["2650115830@qq.com"] #收件人
def send_msg(receivers,subject,msg=""):
#设置服务器所需信息
mail_host = 'smtp.yeah.net'
mail_user = 'PyRobot'
mail_pass = 'XDNCKUHPLRQFVQHA' #密码(部分邮箱为授权码)
NPWPJBSIVXRTYUOB
sender = 'PyRobot@yeah.net'
#构造邮件内容
message = MIMEText(msg,'plain','utf-8')
message['Subject'] = subject
message['From'] = sender
message['To'] = receivers[0]
#登录并发送邮件
try:
smtpObj = smtplib.SMTP()
#连接到服务器
smtpObj.connect(mail_host,25)
#登录到服务器
smtpObj.login(mail_user,mail_pass)
#发送
smtpObj.sendmail(
sender,receivers,message.as_string())
#退出
smtpObj.quit()
return 'send_msg success'
except smtplib.SMTPException as e:
error = 'send_msg error : '+str(e)
print(error)
return error
send_msg(receivers,subject,msg)
有时候我们的代码执行过程中可能会出现一些预料之外的错误,我们希望能够在出错的第一时间内收到出错的消息和原因,
可以使用traceback捕获异常,并发送报错堆栈到我们的微信上。
import traceback
try:
print("train model start")
x = 100/0
print("train model start")
except Exception as e:
error_msg = traceback.format_exc()
send_msg(["2650115830@qq.com"],"error@train_model.py",error_msg)
raise e
可以将以上代码也封装成函数
import traceback
def monitor_run(function,receivers):
try:
function()
except Exception as e:
error_msg = traceback.format_exc()
send_msg(receivers,"error@"+function.__name__,error_msg)
raise e
def f():
return 1/0
monitor_run(f,["2650115830@qq.com"])
四,函数使用范例
上述函数代码已经封装在了python库 bugrobot 文件中了,可以用pip安装使用。
!pip install bugrobot
import bugrobot
subject = "info@train_model.py"
msg = "auc=0.98"
receivers = ["2650115830@qq.com"]
#①send message to Email!
bugrobot.send_msg(receivers,subject,msg)
#②send the bug information to Email if any exception occor!
def f():
return 1/0
bugrobot.monitor_run(f,["2650115830@qq.com"])
相关文章
- Flask中的请求上下文和应用上下文
- 腾讯入资东方金信数亿元,共建大数据生态体系
- 浅谈大数据开发工程师的两年工作经验总结
- 大数据应用案例:Dealer Tire通过大数据预测消费者何时需要轮胎
- 医疗大数据:如何实现商业化变现?
- 大数据分析建模及其应用建议
- 招聘行业大数据应用场景分析
- 大数据入门学习必读好书推荐,请收藏!
- 区块链与大数据的整合,未来必然趋势
- 如今的大数据究竟发展到了什么阶段
- InterSystems IRIS医疗版助力东华医为推动中国医疗行业数字化转型
- 大数据产业进入提质增效关键期
- 社交网络大数据的应用有多大的价值
- 大数据安全防护方法研究与建议
- InterSystems IRIS 数据平台通过AWS云应用商店认证
- 大数据在医疗行业中的5种应用
- 中国大地保险数据管理应用中心大数据应用平台案例分析
- 大数据在应急管理中的应用
- 大数据:产业链条将更为完备
- 2019年大数据发展将走向何方