mirror of
https://github.com/shy3130/tick-stock-panel.git
synced 2026-11-02 10:26:13 +00:00
四个示例以真实 Token 完整跑通: 01 行情 / 02 写入+读回 / 03 策略清单+回测 / 04 票据+事件流 (种告警实时收到 4 条 alert)。 - 02: 演示行不再把占位值写进 date/name, 按字段名给合理值 - 03: POST /api/backtest/run 依赖 vectorbt (可选 extra), 改走所有安装自带 纯 Polars 引擎的 /api/backtest/strategy/run, 近 90 天单标的控制耗时 - 04: hello 帧打印规整
25 lines
1.0 KiB
Python
25 lines
1.0 KiB
Python
"""示例 4 — 事件流 SSE (任意有效 Token; 票据继承 scope)。
|
|
|
|
EventSource 带不了 Authorization 头, 走两步:
|
|
POST /api/events/ticket (Bearer) → 一次性票据 (60 秒)
|
|
GET /api/events?ticket=… → hello 帧 + 事件 (此处演示 alert 告警推送)
|
|
|
|
票据一次性: 断线重连需重新换票。浏览器端用 EventSource,
|
|
脚本端像本例一样逐行读流即可。
|
|
"""
|
|
import itertools
|
|
|
|
from common import call, sse
|
|
|
|
# 1. 换票 (任意 scope 的 Token 都可; 流里只推票据 scope 覆盖的事件)
|
|
ticket = call("POST", "/api/events/ticket")["ticket"]
|
|
print("票据已签发 (60s 内一次性)")
|
|
|
|
# 2. 订阅: hello 帧之后, 面板触发任意监控告警即可看到 alert 事件
|
|
for event in itertools.islice(sse(f"/api/events?ticket={ticket}"), 5):
|
|
if event.get("event") == "hello":
|
|
print("hello: 票据 scope =", event.get("data", ""))
|
|
continue
|
|
print(f"[{event.get('event')}] {event.get('data', '')[:120]}")
|
|
print("(收到 5 帧后退出; 生产环境保持连接持续接收)")
|