返回列表 发布新帖

QMT 内置 Python 的 save_py_key / get_py_key 超时、分片保存和重启恢复问题求助

6 0
发表于 5 小时前 | 显示全部楼层 阅读模式

使用环境:国金证券 QMT 交易端 2.1.33.0,内置 Python 3.12。策略使用 save_py_key / get_py_key 保存运行状态,数据较大,需要分片保存。

遇到以下问题,希望了解接口的正式行为及推荐处理方式:

1. 读取空键

读取尚未创建的键时,曾收到 KeyError: 不存在key;另一次对新测试键读取时,返回成功但值为空。

请问这两种结果分别代表什么?是否有官方推荐的方式区分“键从未创建”和“读取异常或未读到最新值”?

2. 保存超时

一次分片保存调用约 19 秒后返回:

KV_SAVE_FAILED:300000
error id: 121,超时时间已到
phase=chunk

请问 save_py_key 返回超时后,这次写入是否可能仍在后台继续执行并最终生效?这种情况下,是否有官方推荐的读回、重试或确认方式?

3. 同一键的写入顺序

在隔离测试键上,依次写入旧版、新版、旧版,每次都读回一致,最终读到的是旧版。

如果旧请求因超时或其他原因晚到,同一键上是否存在旧请求覆盖新结果的可能?接口是否提供写入顺序保证、版本校验或类似原子条件更新的能力?

4. 重启后如何确认最新状态

实际策略曾出现状态恢复时分片内容或结构不匹配的问题。当前保存方案使用分片、索引和哈希校验,但担心索引被旧请求覆盖,或者重启时读到完整但过期的索引。

请问 get_py_key 在成功写入、客户端重启或网络重连后,是否保证读到最新已确认版本?对于多分片状态的发布和恢复,官方是否有推荐方案或示例?

5. 跨进程及测试键管理

如果同一账户或策略命名空间可能被多个进程访问,官方推荐如何避免同时写入或相互覆盖?测试过程中创建的键,是否有正式支持的删除方式?

已有测试结果供参考:隔离测试中,8 个合成分片及索引保存、逐片读回成功;关闭并重新登录 QMT 后再次读取,也全部一致。但这只能说明当次测试通过,尚不足以确认超时、旧请求晚到或并发时的行为。

希望获得接口文档、错误码说明或适用于券商 QMT 内置 Python 的官方示例。谢谢!

回复

您需要登录后才可以回帖 登录 | 立即注册

客服专线

400-080-8112

用思考的速度交易,用真诚的态度合作,我们是认真的!
  • 关注公众号
  • 添加微信客服
Copyright © 2001-2026 迅投QMT社区 版权所有 All Rights Reserved. 京ICP备2025122616号-3
关灯 快速发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表