如何实现每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
相关产品推荐
相关产品推荐

