You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Python Tibber模块仅返回单次最新值而非循环输出?

修改方案

直接利用tibber库的异步特性,在获取到第一条实时数据后立即停止数据流,实现单次获取最新值的需求。修改后的代码如下:

import tibber
import asyncio

async def get_single_power_reading():
    account = tibber.Account("tokenstring")
    home = account.homes[0]
    
    # 定义变量存储单次获取的结果
    power_value = None
    
    async def process_data(data):
        nonlocal power_value
        power_value = data.power
        # 获取数据后立刻停止实时数据流
        await home.stop_live_feed()
    
    # 注册事件回调
    home.event("live_measurement")(process_data)
    
    # 启动实时数据流
    await home.start_live_feed(user_agent="Homey/10.0.0")
    
    return power_value

# 执行异步函数并输出结果
if __name__ == "__main__":
    result = asyncio.run(get_single_power_reading())
    print(f"单次获取的功率值: {result}")

关键改动说明:

  • 用asyncio管理异步流程,确保代码可以同步执行并获取结果
  • 通过nonlocal关键字让回调函数能修改外部函数的变量,存储单次数据
  • 获取到数据后立即调用await home.stop_live_feed()终止数据流,避免持续接收数据
  • 借助asyncio.run()直接运行异步函数,拿到单次获取的结果

内容的提问来源于stack exchange,提问作者Husky-CGN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 20:22:03