Python Web Scraping - 出现错误时的电子邮件通知

问题描述 投票:0回答:1

我已经在Python上获得了一些网络抓取代码,现在需要编写一些代码,这样如果出现错误,它会通过电子邮件通知某人。我在网上找到了这个代码:

def send_email():
    to = request.form.get('to')
    if not to:
        return ('Please provide an email address in the "to" query string '
                'parameter.'), 400

    sg = sendgrid.SendGridAPIClient(apikey=SENDGRID_API_KEY)

    to_email = mail.Email(to)
    from_email = mail.Email(SENDGRID_SENDER)
    subject = 'This is a test email'
    content = mail.Content('text/plain', 'Example message.')
    message = mail.Mail(from_email, subject, to_email, content)

    response = sg.client.mail.send.post(request_body=message.get())

    if response.status_code != 202:
        return 'An error occurred: {}'.format(response.body), 500

    return 'Email sent.' 

这是我应该使用的那种东西吗?如果没有,那么解决这个问题的最佳方法是什么?

提前致谢。

python email alert sendgrid
1个回答
0
投票

我的意思是:

try: 
     # Web scrapping code    
except requests.packages.urllib3.exceptions.MaxRetryError as e:
     print repr(e)
     send_email()

要么

使用except而不指定被动处理。

try: 
     # Web scrapping code    
except:
     send_email()

但:

From the PEP-8 Style Guide for Python

捕获异常时,请尽可能提及特定异常,而不是使用bare except子句。

一个裸的except:子句将捕获SystemExit和KeyboardInterrupt异常,这使得用Control-C中断程序变得更加困难,并且可以掩盖其他问题。如果你想捕获所有发出程序错误信号的异常,请使用除Exception :(裸除了除了BaseException之外)。

一个好的经验法则是将裸“除”子句的使用限制为两种情况:

如果异常处理程序将打印出来或记录回溯;至少用户会意识到发生了错误。如果代码需要做一些清理工作,但随后让异常向上传播并加注。尝试...终于可以更好地处理这种情况。

© www.soinside.com 2019 - 2024. All rights reserved.