# rust_vnpy_rest_client **Repository Path**: wangshaonan/rust_vnpy_rest_client ## Basic Information - **Project Name**: rust_vnpy_rest_client - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-11-24 - **Last Updated**: 2025-11-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Rust REST Client 项目使用文档 ## 编译与安装 ### 1. 编译项目 在 `rust_rest_client_project` 项目目录下运行: ```bash maturin build --release ``` ### 2. 安装编译产物 找到生成的 `.whl` 文件并安装: ```bash pip install path/to/rust_rest_client-*.whl ``` ### 3. Debug 配置 调试时需要将 `lib.rs详细日志` 中的代码复制到 `src/lib.rs` --- ## 使用方法 ### 修改 VNPy REST Client 导入 修改 `vnpy.api.rest/__init__.py` 代码: ```python # 注释掉原有导入 # from .rest_client import Request, Response, RestClient # 使用 Rust 实现 from rust_rest_client import Request, RestClient ``` --- ## 实现必需的回调函数 ### 在 `vnpy.trader.utility` 中新增以下代码: ```python from vnpy.event import Event, EventEngine from typing import Dict from filelock import FileLock # 此处 EVENT_ENGINE 仅供初始化使用,实际调用的是交易子进程里面的 EVENT_ENGINE EVENT_ENGINE = EventEngine(interval=int(1e9)) EVENT_ENGINE.start() # ---------------------------------------------------------------------------------------------------- def write_log(msg: str, gateway_name: str = ""): """ 写入日志信息 参数: msg: 日志消息内容 gateway_name: 网关名称 """ global EVENT_ENGINE data = LogData(msg=msg, gateway_name=gateway_name) event = Event(EVENT_LOG, data) EVENT_ENGINE.put(event) def receive_event_engine(event_engine: EventEngine): """ 接收并设置事件引擎 参数: event_engine: 交易子进程的事件引擎实例 """ global EVENT_ENGINE EVENT_ENGINE = event_engine def save_connection_status(gateway_name: str, status: bool, msg: str = ""): """ 保存交易接口连接状态 参数: gateway_name: 交易接口的名称 status: 交易接口的连接状态 (True=已连接, False=未连接) msg: 可选的日志信息 """ # gateway_name 为空值直接返回 if not gateway_name: return if msg: write_log(msg) connection_status = load_json("connection_status.json") connection_status.update({gateway_name: status}) save_json("connection_status.json", connection_status) ``` --- ## 交易子进程配置 在交易子进程中增加以下代码: ```python from vnpy.trader.utility import receive_event_engine def run_child_process(): """ 运行交易子进程 """ event_engine = EventEngine() main_engine = MainEngine(event_engine) # 将子进程的事件引擎传递给 utility 模块 receive_event_engine(event_engine) # 其他初始化代码... ``` --- ## 关键说明 - **全局 EVENT_ENGINE**: 初始化时创建的 `EVENT_ENGINE` 仅用于模块加载,实际运行时会被交易子进程的事件引擎替换 - **连接状态持久化**: 连接状态保存在 `connection_status.json` 文件中 - **日志系统集成**: 通过事件系统与 VNPY 的日志模块无缝集成