V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
JCZ2MkKb5S8ZX9pq
V2EX  ›  Python

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

  •  
  •   JCZ2MkKb5S8ZX9pq · 2018-10-27 17:26:47 +08:00 · 2858 次点击
    这是一个创建于 2245 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    有人指点一下嘛?

    14 条回复    2018-10-28 14:22:54 +08:00
    jugelizi
        1
    jugelizi  
       2018-10-27 17:31:46 +08:00
    观察者
    监听一下多久没反应就告警呗
    Trim21
        2
    Trim21  
       2018-10-27 17:55:39 +08:00 via Android
    try: start_spider()
    except: beep()
    JCZ2MkKb5S8ZX9pq
        3
    JCZ2MkKb5S8ZX9pq  
    OP
       2018-10-27 18:25:45 +08:00
    @Trim21 这么粗放的嘛……
    lhx2008
        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()
    misaka19000
        5
    misaka19000  
       2018-10-27 18:59:45 +08:00 via Android   ❤️ 1
    print("\a")
    ninestep
        6
    ninestep  
       2018-10-27 20:57:07 +08:00
    首先,经常出错你就得检查一下你的代码了,如果是固定的一些地方出错,那就加异常捕获把,如果是随机出错,那就写个进程守护就好了嘛,supervisord 好像有邮件报警的功能
    serical
        7
    serical  
       2018-10-27 21:11:59 +08:00 via Android
    mac 调起 shell say xxx
    JCZ2MkKb5S8ZX9pq
        8
    JCZ2MkKb5S8ZX9pq  
    OP
       2018-10-27 21:47:11 +08:00
    @ninestep 现在就是错一次打一点补丁,但就是经常过了几个小时才想起来看一眼。
    ysc3839
        9
    ysc3839  
       2018-10-27 21:55:08 +08:00 via Android
    简单的话可以 print 一个 bell 字符,终端一般会响。
    复杂的话根据平台发送通知。Python 应该有现成的库。
    JCZ2MkKb5S8ZX9pq
        10
    JCZ2MkKb5S8ZX9pq  
    OP
       2018-10-27 22:18:58 +08:00
    @misaka19000 这个第一次知道,666。加了一秒延迟,无限循环了。
    billiepander
        11
    billiepander  
       2018-10-27 22:25:23 +08:00
    用 supervisor autorestart 它吧
    scriptB0y
        12
    scriptB0y  
       2018-10-27 22:40:31 +08:00
    sentry, systemd

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

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

    如果是死活不管先都爬下来,另外跑一个清洗流程,倒是可以。
    但也会碰到相应的弊端,比如爬到错误内容而没有及时察觉。
    cnit
        14
    cnit  
       2018-10-28 14:22:54 +08:00
    用 server 酱
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2764 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 14:56 · PVG 22:56 · LAX 06:56 · JFK 09:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.