请教高手:程序经常跑十几个小时就退出

Author: 暗夜精灵, Created: 2018-06-29 21:59:17, Updated: 2019-07-31 17:31:53

发明者量化 显示有错误,但是并没有打印出是啥错误。。。 这个怎么破?


More

暗夜精灵 有时候退出会打印:GetRecords: type assertion to []interface{} failed 我怀疑其他没打印的退出可能跟这也有关,我是ZB交易所,循环调用 var records = _C(exchange.GetRecords, PERIOD_M1);

暗夜精灵 只是在运行状态那 显示 “有错误”,然后程序退出了。 请问正常的交易程序,最长能跑多久,是不是都跑不了一周呢

暗夜精灵 最要命的是,啥错误也没输出。。。 不然就好办了

小小梦 具体显示是什么 , 可以在这里帖下, 或者 在QQ 群 @ 我 小小梦。

暗夜精灵 顺便问个问题,你们平台的exchange.GetRecords,是没有参数可以控制取得K线条数的吧? 会不会是每次返回结果集太大,造成了内存泄露,然后程序退出呢?

暗夜精灵 我没有调用 null 值的 属性,使用前做了判断。目前也是猜测,机器人单独分散到一台机器再跑跑看的。 var records = _C(exchange.GetRecords, PERIOD_M1); if (!records) { Log("get records error: records === null", "#ff0000"); return -1; }

小小梦 如果对 GetRecords 接口做了 容错,没有 调用 null 值的 属性, 应该是不会出现导致 机器人停止的 报错。 : type assertion to []interface{} failed 这个错误是 交易所返回的数据错误, GO 底层 断言 异常 报错。也是不会引起 机器人停止的。 在机器人 异常停止的时候 , 托管者界面上有 哪些日志显示。

暗夜精灵 我预感FMZ平台的GetRecords实现,可能隐含会导致程序退出的BUG,我对这个这个调用的结果做了判断,就算出错也是捕获到错误,不至于程序退出。我把一个机器人单独运行在一台机器上试试,如果还有退出问题,我就自己实现个看看。

暗夜精灵 机器人费用充足,我说的是交易所里的钱没了,一直还在Buy。。。 结果被封了IP。。

小小梦 是不是 机器人没费了。。

暗夜精灵 自己的停的,日志上啥错误也没显示,托管者正常,用的JS。 不过昨天夜里余额不足一直调下单接口,IP被ZB封了,半天了还没解封。。

小小梦 这个查询不到的, 是机器人 自己停止了么 ?机器人日志上什么都没显示么。 另外托管者 正常么? 用的是 python 语言么?

暗夜精灵 不报任何错,直接退出。 所有打印的日志都正常。你们系统上能查到退出原因吗

小小梦 可以贴下 报错截图 , 或者 在群里发下 截图。可以分析下问题 。

暗夜精灵 我大概知道原因了,ZB规定这个接口每秒钟请求次数不能大于1次,我好几个进程同时跑,可能有时候循环撞到同一秒去了,就出错了。

暗夜精灵 奇怪了,我这边出的特别频繁,肯定是由 exchange.GetRecords 引起的吧,其他函数,比如 exchange.GetTickers不会产生这个错误吧?

小小梦 https://dn-filebox.qbox.me/0c4579a78efee12794cbbb5f5a6bc9cd685c7356.png 测试了一下 ,可以。type assertion to []interface{} failed 这个错误 有可能是 交易所返回的数据 异常, 也可能是 交易所修改了 返回数据结构。 目前测试看来 ,是正常的。

小小梦 这个 是交易所底层数据返回的问题, 我这边测试下 ZB 交易所。 机器人 可以跑很长时间的, 最长跑过 将近两年,中间没停止过。

暗夜精灵 麻烦再帮看下这是什么原因哈