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

如何实现每2秒获取一次WebSocket消息?附Python初始代码

修改币安WebSocket代码实现每2秒获取并打印一次BTCUSDT聚合交易价格

原代码会实时接收并打印每一笔聚合交易的价格,而要实现每2秒获取一次消息(打印价格),我们无法控制币安服务器仅每2秒推送一次数据(WebSocket推送是实时触发的),因此需要在客户端维护最新价格,然后定时每2秒输出一次最新值。

以下是修改后的代码:

import json
import websocket
import threading
import time

# 存储最新的聚合交易价格
latest_price = None

def on_message(ws, message):
    global latest_price
    json_message = json.loads(message)
    # 更新最新价格
    latest_price = json_message['p']

def print_price_periodically():
    global latest_price
    if latest_price is not None:
        print(f"当前最新BTCUSDT聚合交易价格: {latest_price}")
    # 每2秒递归调用自身,实现持续定时打印
    threading.Timer(2, print_price_periodically).start()

if __name__ == "__main__":
    # 启动定时打印任务
    print_price_periodically()
    
    ws = websocket.WebSocketApp(
        "wss://fstream.binance.com/ws/btcusdt@aggTrade",
        on_message=on_message
    )
    ws.run_forever()

关键修改说明:

  • 新增latest_price全局变量,实时存储WebSocket推送的最新聚合交易价格。
  • 新增print_price_periodically函数,通过threading.Timer实现每2秒打印一次最新价格,函数会递归启动下一次定时器,保持持续定时输出。
  • 主程序先启动定时打印任务,再启动WebSocket连接,确保定时逻辑与消息接收逻辑并行运行。

该逻辑会始终输出最近2秒内的最后一笔交易价格,满足每2秒获取一次有效价格的需求。

内容的提问来源于stack exchange,提问作者Mohamed hedi Hamdi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 06:50:27