经常爬着爬着就返回意外或者报错了,而且出现意外的点不止一处,难以预测,全都套 try 有点多。
对 python 的错误处理不大了解,有什么精炼的应对方法嘛?至少出了错能出点声或者发个邮件啥的。
有人指点一下嘛?
1
jugelizi 2018-10-27 17:31:46 +08:00
观察者
监听一下多久没反应就告警呗 |
2
Trim21 2018-10-27 17:55:39 +08:00 via Android
try: start_spider()
except: beep() |
3
JCZ2MkKb5S8ZX9pq OP @Trim21 这么粗放的嘛……
|
4
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() |
5
misaka19000 2018-10-27 18:59:45 +08:00 via Android 1
print("\a")
|
6
ninestep 2018-10-27 20:57:07 +08:00
首先,经常出错你就得检查一下你的代码了,如果是固定的一些地方出错,那就加异常捕获把,如果是随机出错,那就写个进程守护就好了嘛,supervisord 好像有邮件报警的功能
|
7
serical 2018-10-27 21:11:59 +08:00 via Android
mac 调起 shell say xxx
|
8
JCZ2MkKb5S8ZX9pq OP @ninestep 现在就是错一次打一点补丁,但就是经常过了几个小时才想起来看一眼。
|
9
ysc3839 2018-10-27 21:55:08 +08:00 via Android
简单的话可以 print 一个 bell 字符,终端一般会响。
复杂的话根据平台发送通知。Python 应该有现成的库。 |
10
JCZ2MkKb5S8ZX9pq OP @misaka19000 这个第一次知道,666。加了一秒延迟,无限循环了。
|
11
billiepander 2018-10-27 22:25:23 +08:00
用 supervisor autorestart 它吧
|
12
scriptB0y 2018-10-27 22:40:31 +08:00
sentry, systemd
不过最靠谱的还是碰到问题 LOG 下来,或者写到 csv 里面,程序继续跑。 后面根据出错的日志将错误的信息重新搞一下。 |
13
JCZ2MkKb5S8ZX9pq OP @scriptB0y 我是爬取同时就清洗了,另外有分析程序实时就输出结果了,所以会遇到一些意外情况。
有时候是返回意外情况,有时候是对方程序员数据库里写错类型,或者还会有蜜罐之类的。 如果是死活不管先都爬下来,另外跑一个清洗流程,倒是可以。 但也会碰到相应的弊端,比如爬到错误内容而没有及时察觉。 |
14
cnit 2018-10-28 14:22:54 +08:00
用 server 酱
|