首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >计时器过期后api重试尝试

计时器过期后api重试尝试
EN

Stack Overflow用户
提问于 2018-12-17 19:00:05
回答 1查看 144关注 0票数 0

我正在使用Python通过restful连接访问一个楼宇自动化系统,我遇到了一个问题,似乎我没有接收到温度传感器值的更新。它似乎工作了90%的时间和每一次,而我觉得我需要某种重试尝试在代码。没有异常抛出,这段代码似乎永远处于等待状态。下面的方法是如何从传感器接收更新的值:

代码语言:javascript
运行
复制
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秒内没有收到响应,然后重试.类似于:

代码语言:javascript
运行
复制
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

任何提示都有帮助!谢谢..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-17 21:29:24

问题:如果30秒内没有收到响应,...to会创建某种定时器

根据文档,您可以使用wait.(timeout=30)

从文件中: pyhaystack.util.state.HaystackOperation.wait():

  • 这会阻塞当前线程,直到操作完成(或者指定超时,直到该秒数过期为止)。

等待(timeout=None)

  • 等待手术结束。不应在执行操作的线程中调用此操作,因为这将导致死锁。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53821493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档