[英]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.