vn.py量化社区
By Traders, For Traders.
Member
avatar
加入于:
帖子: 32
声望: 1

基于ctp开发的资管api,traderapi里没有自动重连需要开发设计手动重连,这个问题很久以前问过,但是针对的盘中突然断线事实上很少发生所以一直没有认真处理。

我理解的是,创建对象、订阅、注册以后通过init()进行连接,vnpy里ctp封装的init()总共有三句话,
this->active=true;
this->task_thread = thread(&TdApi::processTask, this);
this->api->Init();
第一句不用说,第三句是ctp本身的init()函数,第二句是建立单独的连接进程,此外还有join()和exit()函数封装,因为都涉及到task_thread似乎不能结束进程然后重新开启

按照ctp官方的方法,断线后应当api->registerspi(null);api-> release(); api=null,关闭删除以后重新开始从头创建接口,注册,订阅,连接,但是无法连接,收不到回调函数onFrontConnected(确认网络通畅,如果此时重新关闭软件重新打开做第一次连接测试那完全可以连接上的)

于是我构造了新的函数,去掉了第二句建立进程的部分,也就是没有释放删除而是直接尝试init,当然结果也是不行的

可能的问题出在task_thread进程里,会不会释放删除以后导致进程出现错误?

Administrator
avatar
加入于:
帖子: 4595
声望: 262

最简单的方案,把这个资管系统的连接剥离到独立的RpcService服务进程里,然后客户端发现挂了后,就重启这个服务端进程

© 2015-2019 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号-3

沪公网安备 31011502017034号