python - Python Web Scraping - 出现错误时的电子邮件通知
问题描述
我已经获得了一些关于 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.'
这是我应该使用的那种东西吗?如果没有,解决这个问题的最佳方法是什么?
提前致谢。
解决方案
我的意思是:
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()
但:
捕获异常时,尽可能提及特定的异常,而不是使用裸的 except: 子句。
一个简单的 except: 子句将捕获 SystemExit 和 KeyboardInterrupt 异常,使使用 Control-C 中断程序变得更加困难,并且可以掩盖其他问题。如果要捕获所有表明程序错误的异常,请使用 except Exception: (bare except 等价于 except BaseException:)。
一个好的经验法则是将裸“除外”子句的使用限制在两种情况下:
如果异常处理程序将打印或记录回溯;至少用户会意识到发生了错误。如果代码需要做一些清理工作,然后让异常通过 raise 向上传播。尝试...终于可以成为处理这种情况的更好方法。
推荐阅读
- java - 改造:将嵌套的 JSON 元素解析为列表
- angular - 如何在 ionic 3 中的 div 内设置背景图像?
- angular - 获取 Angular 资产文件夹中所有 svg 文件的列表
- symfony - Symfony 4.2 中没有根节点的树构建器
- ejabberd - 在 ejabberd 的 vcard 中添加字段时无法理解崩溃
- android - 通过 Android Studio 进行 Android 到 Android 远程连接
- ruby-on-rails - Ruby - 带有通配符的请求路由不起作用
- wordpress - WordPress 页面编辑器显示不正确
- java - 将 Spark 与已实现的日志记录机制一起使用?
- java - 如何使用广播接收器警报管理器每 10 秒向服务器发送一次文本