如何为Python机器人代码设置崩溃时的警报或蜂鸣提醒?
Python机器人进程崩溃时触发警报的实现方法
一、代码内部捕获异常触发蜂鸣
直接在代码里加全局异常处理,不管是语法错误还是运行时异常,只要未被捕获,就触发蜂鸣再退出。
方法1:用try-except包裹主逻辑
把机器人的主循环包在try块里,所有未处理的异常都会进入except分支:
import winsound # Windows平台直接用,无需额外安装 # 跨平台可选:先pip install playsound,用playsound播放音频文件 from playsound import playsound import traceback def trigger_alert(): # Windows蜂鸣:频率1000Hz,持续2秒 winsound.Beep(1000, 2000) # 跨平台替代方案:播放本地音频文件 # playsound("alert.wav") if __name__ == "__main__": try: # 这里写你的机器人主循环代码 while True: # 机器人业务逻辑 pass except Exception as e: # 先打印异常信息,方便后续排查问题 traceback.print_exc() # 触发警报 trigger_alert() # 重新抛出异常,不掩盖崩溃原因 raise
方法2:全局异常钩子(适合多线程/复杂场景)
用sys.excepthook捕获所有未处理的异常,哪怕是多线程里的异常也能覆盖:
import sys import winsound import traceback def crash_alert_hook(exc_type, exc_value, exc_traceback): # 打印完整异常栈 traceback.print_exception(exc_type, exc_value, exc_traceback) # 触发蜂鸣 winsound.Beep(1000, 2000) # 调用系统默认的异常处理流程 sys.__excepthook__(exc_type, exc_value, exc_traceback) # 替换默认的异常钩子 sys.excepthook = crash_alert_hook # 机器人主逻辑 while True: # 业务代码 pass
二、外部工具监控(无需修改代码)
如果担心代码崩溃到连蜂鸣逻辑都执行不了,或者不想改原有代码,可以用外部工具监控进程:
Windows任务计划程序:
- 创建新任务,触发器选「特定进程终止时」,选择你的Python进程(比如python.exe,或者指定脚本名)
- 操作设置为「启动程序」,可以选一个能播放警报的脚本(比如写个bat脚本调用winsound,或者单独的Python蜂鸣脚本)
Linux/macOS Shell监控脚本:
写个简单的后台脚本,每隔几秒检查进程是否存活,不存在就触发警报:
#!/bin/bash # 替换成你的机器人脚本名,比如robot.py TARGET_PROCESS="robot.py" while true; do # 检查进程是否存在 if ! pgrep -f "$TARGET_PROCESS" > /dev/null; then # Linux下先装beep:sudo apt install beep beep -f 1000 -l 2000 # 同时发桌面通知 notify-send "机器人进程崩溃了!" # 退出监控循环,或者注释掉break一直监控(进程重启后继续) break fi sleep 5 done
- 专业进程监控工具:
Linux可以用monit或supervisor,Windows可以用Process Monitor,这些工具能配置进程崩溃时自动执行自定义命令(比如蜂鸣、重启进程、发通知)
三、其他提醒方式
除了蜂鸣,还可以用这些更醒目的方式:
- 桌面通知:Windows用
win10toast库,Linux用notify-send,macOS用pync库 - 邮件/短信通知:调用SMTP接口发邮件,或者用第三方短信API,适合不在电脑旁的场景
- 弹窗提示:用
tkinter写个简单的弹窗,崩溃时弹出红色醒目提示框
内容的提问来源于stack exchange,提问作者dzdsds
相关产品推荐
相关产品推荐

