怎么让 Python 在意外中止之后 播放警告音

2018-10-27 17:26:47 +08:00
 JCZ2MkKb5S8ZX9pq

经常爬着爬着就返回意外或者报错了,而且出现意外的点不止一处,难以预测,全都套 try 有点多。

对 python 的错误处理不大了解,有什么精炼的应对方法嘛?至少出了错能出点声或者发个邮件啥的。

有人指点一下嘛?

2862 次点击
所在节点    Python
14 条回复
jugelizi
2018-10-27 17:31:46 +08:00
观察者
监听一下多久没反应就告警呗
Trim21
2018-10-27 17:55:39 +08:00
try: start_spider()
except: beep()
JCZ2MkKb5S8ZX9pq
2018-10-27 18:25:45 +08:00
@Trim21 这么粗放的嘛……
lhx2008
2018-10-27 18:29:32 +08:00
你这样 try 就没有问题啊

try:
try:
except: ... throw Exception
try:
except: ... throw Exception
try:
except: ... throw Exception
try:
except: ... throw Exception
try:
except: ... throw Exception
except:
beep()
misaka19000
2018-10-27 18:59:45 +08:00
print("\a")
ninestep
2018-10-27 20:57:07 +08:00
首先,经常出错你就得检查一下你的代码了,如果是固定的一些地方出错,那就加异常捕获把,如果是随机出错,那就写个进程守护就好了嘛,supervisord 好像有邮件报警的功能
serical
2018-10-27 21:11:59 +08:00
mac 调起 shell say xxx
JCZ2MkKb5S8ZX9pq
2018-10-27 21:47:11 +08:00
@ninestep 现在就是错一次打一点补丁,但就是经常过了几个小时才想起来看一眼。
ysc3839
2018-10-27 21:55:08 +08:00
简单的话可以 print 一个 bell 字符,终端一般会响。
复杂的话根据平台发送通知。Python 应该有现成的库。
JCZ2MkKb5S8ZX9pq
2018-10-27 22:18:58 +08:00
@misaka19000 这个第一次知道,666。加了一秒延迟,无限循环了。
billiepander
2018-10-27 22:25:23 +08:00
用 supervisor autorestart 它吧
scriptB0y
2018-10-27 22:40:31 +08:00
sentry, systemd

不过最靠谱的还是碰到问题 LOG 下来,或者写到 csv 里面,程序继续跑。

后面根据出错的日志将错误的信息重新搞一下。
JCZ2MkKb5S8ZX9pq
2018-10-27 22:55:20 +08:00
@scriptB0y 我是爬取同时就清洗了,另外有分析程序实时就输出结果了,所以会遇到一些意外情况。
有时候是返回意外情况,有时候是对方程序员数据库里写错类型,或者还会有蜜罐之类的。

如果是死活不管先都爬下来,另外跑一个清洗流程,倒是可以。
但也会碰到相应的弊端,比如爬到错误内容而没有及时察觉。
cnit
2018-10-28 14:22:54 +08:00
用 server 酱

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/501716

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX