Python: "Unbreakable" 已退出无限循环
Python: "Unbreakable" infinite loop was exited
我正在使用 RuuviTag 蓝牙传感器记录数据,该传感器将温度值发送到我的 RaspberryPi。
根据 RuuviTag Python 库文档,我应该使用函数 RuuviTagSensor.get_datas(handle_data)
,它会启动函数 handle_data()
的无限循环。
就我而言,我将其设计为:
def handle_data(found_data):
temperature_measurement = found_data[1]['temperature']
publish_via_mqtt(temperature_measurement)
我把它全部包在了:
while True:
try:
RuuviTagSensor.get_datas(handle_data)
except Exception:
logger.exception(f"An error occurred at {datetime.now(timezone.utc)}")
reconnect_mqtt()
然而,一夜之间,我断了...
日志说:
INFO:ruuvitag_sensor.ble_communication:Problem with hciconfig reset. Retry reset.
INFO:ruuvitag_sensor.ble_communication:Problem with hciconfig reset. Retry reset.
INFO:ruuvitag_sensor.ble_communication:Problem with hciconfig reset. Retry reset.
INFO:ruuvitag_sensor.ble_communication:Problem with hciconfig reset. Exit.
所以 RaspberryPi 似乎遇到了蓝牙问题并尝试与 Ruuvis 重新连接......当这 3 次都不起作用时,他只是 EXITED PYTHON?我对么?如果退出或处理此退出,是否有重新启动整个脚本的方法?
在库 code 中,如果在尝试三次后仍无法启动传感器,则调用 exit(1)
。
调用 exit raises the SystemExit exception. SystemExit 不继承自 Exception
,因此不会被问题代码中的 try/except 块捕获。根据项目的自述文件,这种行为似乎是故意的:
In case of errors, application tries to exit immediately, so it can be automatically restarted.
如果您想强制库继续重试,可以在程序中捕获 SystemExit
(except SystemExit:
)。
我正在使用 RuuviTag 蓝牙传感器记录数据,该传感器将温度值发送到我的 RaspberryPi。
根据 RuuviTag Python 库文档,我应该使用函数 RuuviTagSensor.get_datas(handle_data)
,它会启动函数 handle_data()
的无限循环。
就我而言,我将其设计为:
def handle_data(found_data):
temperature_measurement = found_data[1]['temperature']
publish_via_mqtt(temperature_measurement)
我把它全部包在了:
while True:
try:
RuuviTagSensor.get_datas(handle_data)
except Exception:
logger.exception(f"An error occurred at {datetime.now(timezone.utc)}")
reconnect_mqtt()
然而,一夜之间,我断了...
日志说:
INFO:ruuvitag_sensor.ble_communication:Problem with hciconfig reset. Retry reset.
INFO:ruuvitag_sensor.ble_communication:Problem with hciconfig reset. Retry reset.
INFO:ruuvitag_sensor.ble_communication:Problem with hciconfig reset. Retry reset.
INFO:ruuvitag_sensor.ble_communication:Problem with hciconfig reset. Exit.
所以 RaspberryPi 似乎遇到了蓝牙问题并尝试与 Ruuvis 重新连接......当这 3 次都不起作用时,他只是 EXITED PYTHON?我对么?如果退出或处理此退出,是否有重新启动整个脚本的方法?
在库 code 中,如果在尝试三次后仍无法启动传感器,则调用 exit(1)
。
调用 exit raises the SystemExit exception. SystemExit 不继承自 Exception
,因此不会被问题代码中的 try/except 块捕获。根据项目的自述文件,这种行为似乎是故意的:
In case of errors, application tries to exit immediately, so it can be automatically restarted.
如果您想强制库继续重试,可以在程序中捕获 SystemExit
(except SystemExit:
)。