我已经在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.'
这是我应该使用的东西吗?如果没有,解决此问题的最佳方法是什么?
谢谢。
答案 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'子句的使用限制为两个 情况:
如果异常处理程序将打印输出或记录 追溯;至少用户会意识到发生了错误。 如果代码需要做一些清理工作,但是让异常 随着上升向上传播。尝试...最终可能是更好的方法 处理这种情况。