我正在使用Python通过restful连接访问一个楼宇自动化系统,我遇到了一个问题,似乎我没有接收到温度传感器值的更新。它似乎工作了90%的时间和每一次,而我觉得我需要某种重试尝试在代码。没有异常抛出,这段代码似乎永远处于等待状态。下面的方法是如何从传感器接收更新的值:
def getState(self):
sensor = session.find_entity(filter_expr='dat2', single=True)
sensor.wait()
sensor = sensor.result
sensor = float(sensor.tags['curVal'])
return sensor我使用的包称为pyhaystack,在操作数下的读博士中有一节介绍如何编写异步异常,除非我没有遇到任何异常,很抱歉这里也没有太多的API智慧.
在下面的截图中,这是在键盘中断后,代码坐了一整夜等待。我编写了custom_env.py文件,但下面的所有内容都是pyhaystack包的一部分。

我知道下面的代码是不正确的,因为如果它挂在for i in range上,它永远不会到达sensor.wait(),但是是否有可能创建某种计时器,如果30秒内没有收到响应,然后重试.类似于:
def getState(self):
sensor = session.find_entity(filter_expr='dat2', single=True)
sensor.wait()
n=30
for i in range(n)
time.sleep(1)
n-=1
if n=0 and sensor.wait():#didnt work, retry
sensor = session.find_entity(filter_expr='dat2', single=True)
sensor.wait()
else:
pass
sensor = sensor.result
sensor = float(sensor.tags['curVal'])
return sensor任何提示都有帮助!谢谢..。
发布于 2018-12-17 21:29:24
问题:如果30秒内没有收到响应,...to会创建某种定时器
根据文档,您可以使用wait.(timeout=30)
从文件中: pyhaystack.util.state.HaystackOperation.wait():
等待(timeout=None)
https://stackoverflow.com/questions/53821493
复制相似问题