主 题:定时任务跑超时,两个实例同时写一个文件,把数据写坏了
发 布 者:webblekubera
标签分类: 技术
时 间:2026-09-18 11:22:01
内容预览:出了什么事有个定时任务定期拉一次数据,写进本地一个 JSON 文件。平时很快就跑完,某天上游接口变慢,上一轮还没结束,下一轮又被调度起来。两个进程同时写同一个文件,文件只剩半截。后面读它的任务全部解析失败,而且没有任何报警。怎么修的加锁:任务一开始先抢锁,抢不到就记一行日志直接退出,不排队。有 flock 就用 flock,没有的话用 mkdir 建目录当锁,这个操作是原子的。原子写:先写到同目录的临时文件,确认能正常解析,再用 rename 覆盖正式文件。读的一方要么拿到旧版本,要么拿到新版本,不会拿到半截。给任务加超时,卡死的进程不能一直占着锁。教训:调度器只负责按时启动,不管上一轮有没有跑完。
直达链接: https://www.nodeseek.com/post-934981-1
 
 
Back to Top