Python Web Scraping-发生错误时的电子邮件通知

时间:2019-03-13 14:15:30

标签: python email alert sendgrid

我已经在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.' 

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

谢谢。

1 个答案:

答案 0 :(得分:0)

我的意思是

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

OR

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

try: 
     # Web scrapping code    
except:
     send_email()

但是:

From the PEP-8 Style Guide for Python

  

捕获异常时,请在任何时候提及特定的异常   可能会使用空的else:子句代替。

     

仅有的except:子句将捕获SystemExit和KeyboardInterrupt   异常,使得使用Control-C中断程序变得更加困难,   并掩饰其他问题。如果您想捕获所有异常   表示程序错误,请使用Exception除外:   等同于BaseException:)。

     

一个好的经验法则是将裸'except'子句的使用限制为两个   情况:

     

如果异常处理程序将打印输出或记录   追溯;至少用户会意识到发生了错误。   如果代码需要做一些清理工作,但是让异常   随着上升向上传播。尝试...最终可能是更好的方法   处理这种情况。