树莓派Python加密交易脚本无报错运行数小时后停止求助
加密货币交易脚本无故停止的排查与解决建议
问题背景
一款对接Bitvavo的Python加密货币交易脚本,曾可稳定运行数周/数月,但近期运行数小时后无任何错误提示就停止输出(脚本每10分钟会打印操作及时间戳)。脚本未做任何修改,单次循环约3秒,已正常运行超1000次循环,一周前仍可无限期稳定运行。运行设备为Raspberry Pi 2 Model B Rev 1.1,在Geany Shell或Idle3中均出现此问题。
已完成的排查操作:
- 执行系统全量更新(
apt-get full-upgrade、apt-get dist-upgrade),问题未解决 - 更换新SD卡并重装Raspbian系统,问题未解决
- 怀疑硬件故障,但设备除脚本停止外无其他异常,已连续24/7运行14个月
进一步排查与解决方向
1. 捕获未输出的崩溃/异常信息
脚本无提示停止,大概率是未捕获的异常导致进程终止但终端未输出,可通过以下方式捕获:
- 将脚本输出重定向到日志文件,同时捕获标准错误:
python3 your_script.py >> script_logs.txt 2>&1 & - 在脚本中添加全局异常捕获,记录详细错误:
import traceback import logging logging.basicConfig(filename='script_errors.log', level=logging.ERROR) try: # 你的主循环逻辑 while True: # 原有操作代码 except Exception as e: logging.error(f"脚本崩溃: {str(e)}") logging.error(traceback.format_exc()) raise
2. 检查系统层面的进程终止原因
树莓派资源有限,可能被系统主动终止进程,可通过以下命令排查:
- 查看系统日志中是否有OOM(内存不足)或进程被kill的记录:
dmesg | grep -i kill cat /var/log/syslog | grep -i oom - 实时监控脚本的CPU、内存占用,记录资源变化:
# 每10秒记录一次脚本资源占用,替换为你的脚本进程名 while true; do ps aux | grep your_script.py | grep -v grep >> resource_usage.log sleep 10 done &
3. 排查Bitvavo API交互问题
脚本与Bitvavo的网络/API交互可能出现静默失败:
- 给所有API请求添加超时和异常捕获(以
requests库为例):import requests try: response = requests.get("BITVAVO_API_URL", timeout=10) response.raise_for_status() # 触发HTTP错误异常 except requests.exceptions.RequestException as e: print(f"API请求失败: {str(e)}") # 可添加重试逻辑 - 检查Bitvavo API的调用频率限制,确认是否触发限流导致连接被断开。
4. 硬件层面深度排查
树莓派长期运行可能存在隐性硬件问题:
- 检查CPU温度,过热会触发降频或进程终止:
若温度超过70℃,加装散热片或风扇改善散热。vcgencmd measure_temp - 验证电源稳定性:用电压表测量Micro USB接口电压,正常应在5V±0.2V范围内,劣质/老化电源可能导致电压波动触发系统保护。
5. 更换运行环境验证
- 脱离IDE,直接在终端后台运行脚本:
nohup python3 your_script.py > script_output.log 2>&1 &nohup可让脚本在终端关闭后继续运行,同时捕获所有输出。 - 在普通PC上运行脚本,排除树莓派硬件/系统的问题。
内容的提问来源于stack exchange,提问作者Johan
相关产品推荐
相关产品推荐

