量化程序放到云服务器以后,我最初也只看进程在不在、CPU 有没有跑满。后来碰到过脚本没有退出,但行情接口已经卡住,最后只写出半份结果的情况,才发现“机器正常”不等于“任务正常”。现在我会先把业务日志补齐:每次任务至少记录开始时间、交易日、数据条数、耗时、结束状态和异常摘要。这样第二天回头看时,能很快分清是数据没到、计算变慢,还是任务压根没有走到收尾,而不是只对着一行“运行成功”猜来猜去。
如果程序跑在腾讯云 CVM 上,规模不大时没必要急着改代码接一整套日志 SDK。让 Python 的 logging 按天轮转写到固定目录,再用 CLS 的 LogListener 采集文本文件,已经够用。腾讯云文档给出的基本流程是安装并启动 LogListener,把服务器加入机器组,再配置文本日志采集。我比较在意的是把格式先定下来,例如 time、job、trade_date、count、elapsed_ms、status 各自成字段,之后查某天任务、统计失败次数和比较耗时都会省事不少。告警也不要简单设成“出现 error 就通知”,行情接口偶尔重试一次很常见,更值得关注的是连续失败、收盘后还没有 done 记录、数据条数为零,或者任务耗时突然比平时高很多。CLS 的告警策略会周期性执行检索分析,正好可以检查这些业务结果;刚开始条件可以放宽一点,先观察几天再收紧,不然通知太多,很快就会被自己忽略。
日志能集中查看之后,还得注意别把交易口令、SecretKey、完整请求头和账户信息一起打进去。腾讯云的 Python SDK 文档也建议通过环境变量读取密钥,不要明文放在工程代码里。我的习惯是业务日志只留下排障需要的字段,原始响应按需截断,保存周期按实际回溯需求设置。量化程序是否稳定,最后看的不是服务器亮着绿灯,而是每天该完成的那条链路都有记录、有结果,出了问题也能找到从哪一步开始不对。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。