繁体   English   中英

错误处理程序:Python无限循环的Bash启动脚本

[英]Error Handler: Bash starter script for Python endless loop

我有一个项目需要一个用Python编写的无限循环。 该脚本将循环遍历一系列变量(在脚本开头创建一次),使用每个变量执行一项任务,然后重新开始。 这在99.9%的时间内效果很好,但是每隔一段时间,电子就会卡住并崩溃。 这不是问题,是由硬件限制而不是我的脚本引起的。 我的Python脚本输出的错误如下,是由于I2C总线另一端的Arduino忙于做其他事情而无法响应的原因而导致的:

    Traceback (most recent call last):
  File "i2cGet.py", line 105, in <module>
    i2c.i2cWrite(0x54, 1, fanCurrent)
  File "/home/pi/arduino_Interface/i2c.py", line 43, in i2cWrite
    bus.write_byte(address,data)
IOError: [Errno 5] Input/output error

为了解决这个问题,我有一个bash“启动程序”,当它崩溃时将使用until python script.py do来重新启动python脚本。 这也可以正常工作,但是我正在为此过程进行事件日志记录,并且需要一种方法来知道我的python脚本崩溃了的数组中的哪个变量,以便可以将其插入日志中。 大概可以用Python中的自定义事件处理程序来完成,但是我很难确定要完成此任务需要做什么。

总结中的问题:如何在Python中创建自定义事件处理程序,然后检索要在bash启动程序脚本中使用的事件?

请为事件/事件处理程序使用我的术语。 我只是在寻找一种方法,以防发生错误,传递我正在使用的数组中的最后一个元素。 在这种情况下,i2cWrite函数中的0x54,但是如果脚本在循环中的其他位置崩溃,则可能不会始终在其中列出0x54。 也许更正确的术语是错误处理程序,而不是事件处理程序...

在这一点上,我在Bash中执行此操作的唯一原因是我有一个启动脚本,用于在以前的项目中保持持久性,该项目运行良好,并且很容易对其进行调整以适合该项目。 如果使用Python入门工具更容易处理此问题,我可以轻松地(我认为)将其移植过来。

谢谢你的帮助!

until event=$(python script.py)
do
  ...
done

python脚本应将事件打印到stdout,然后可以在循环体中引用$event

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM