Python WebSocket 实现融通金实时行情监听

一、业务背景

黄金回收、珠宝门店系统开发中,融通金报价是很常用的数据来源。本文使用 Python WebSocket 实现长连接监听,包含心跳保活、断线自动重连、行情字段解析,可直接部署服务端 7×24 小时运行。

说明:订阅报文格式 {"Key":"品种编码"},客户端每 10 秒发送 ping 心跳维持链路。 主要品种编码:RJGOLD 融通金黄金,RJAG 融通金白银,RJPT 铂金,RJPd 钯金。

二、Python 依赖安装

python 复制代码
pip install websocket-client

三、完整代码实现

python 复制代码
import websocket
import json
import threading
import time

# WebSocket真实地址,仅代码内配置
WS_URL = "ws://39.107.99.235/ws"
SYMBOL = "RJGOLD"

def heartbeat_daemon(ws_conn):
    while True:
        try:
            ping_payload = json.dumps({"ping": int(time.time())})
            ws_conn.send(ping_payload)
        except Exception:
            pass
        time.sleep(10)

def on_open(ws):
    print("长连接已建立,订阅融通金黄金行情")
    sub_msg = json.dumps({"Key": SYMBOL})
    ws.send(sub_msg)
    threading.Thread(target=heartbeat_daemon, args=(ws,), daemon=True).start()

def on_message(ws, message):
    try:
        obj = json.loads(message)
        if "body" not in obj:
            return
        body = obj["body"]
        print("-" * 60)
        print(f"融通金黄金 售卖价:{body['Price']} 回购价:{body['BuyPrice']}")
        print(f"最高:{body['High']} 最低:{body['Low']} 更新时间:{body['Time']}")
        print("-" * 60)
    except Exception as e:
        print("解析异常", str(e))

def on_close(ws, code, msg):
    print(f"连接断开 code={code}, 3s后重连")
    time.sleep(3)
    start_ws()

def start_ws():
    app = websocket.WebSocketApp(
        WS_URL,
        on_open=on_open,
        on_message=on_message,
        on_close=on_close
    )
    app.run_forever()

if __name__ == "__main__":
    start_ws()

四、HTTP 获取实时行情示例代码

不需要长连接的场景,可以用 HTTP 轮询方式获取报价。

python 复制代码
import requests

url = "http://39.107.99.235:1008/getQuote.php?code=RJGOLD"
headers = {"Accept‑Encoding": "gzip"}

resp = requests.get(url, headers=headers, timeout=8)
print(resp.text)

五、K 线获取示例代码

python 复制代码
import requests

url = "http://39.107.99.235:1008/redis.php?code=RJGOLD&time=5m&rows=200"
resp = requests.get(url, timeout=8)
print(resp.text)

六、字段简要说明

字段 说明
StockCode 品种编码
Price 售卖报价
BuyPrice 门店回购价
High 日内最高
Low 日内最低
Time 行情更新时间

七、生产环境注意点

  1. WebSocket 空闲状态必须每 10 秒发送心跳包,否则服务端会主动关闭连接;
  2. HTTP 调用注意频率,不要高频循环请求,避免触发限流;
  3. 线上部署建议增加日志输出,把行情落库,方便后续查询;
  4. 切换其他品种,只需要修改编码,业务逻辑不用改动。

八、总结

这套代码解决融通金行情监听的心跳、重连、解析问题,适合黄金门店系统、金价大屏等业务场景,更换品种编码即可适配白银、铂金等其他品类。

相关推荐
only-qi41 分钟前
Python Agent 开发速通清单
开发语言·python
小蒜学长1 小时前
基于Django的社区团购购物平台的设计与实现(代码+数据库+LW)
数据库·后端·python·django
zq_63891 小时前
ObjectModel_diagram.pdf 文档详细总结
开发语言·matlab
AC赳赳老秦1 小时前
个保法下数据处理:OpenClaw 自动过滤公开数据中的个人信息,保障采集分析合规性
java·python·sqlite·json·php·deepseek·openclaw
Zane19941 小时前
threading、multiprocessing、asyncio 到底怎么选?一张图 + 三组实测数据说清楚
后端·python
Three_ST1 小时前
沐神-动手学习深度学习-习题答案4.4模型选择,欠拟合,过拟合
人工智能·python·深度学习·学习·算法
CodeStats1 小时前
【Java进程通信】Java进程通信系统完全指南:从ProcessBuilder底层原理到多语言实战
java·前端·python·进程·ai编程·processbuilder
用户0332126663671 小时前
使用 Python 设置 Excel 文件属性
python
jyOverQ2 小时前
LangGraph Agent 模式详解:从自主决策到 Tool Calling 执行链
python·langchain