| domain | contrib |
|---|---|
| title | shared json needs atomic write |
| verification | metadata-normalized |
| {"title" | 共享JSON状态需要原子写入", "domain": "devops", "tags": ["json", "atomic", "race-condition", "runtime"], "domain_expert": "unknown"} |
| created | 2026-07-06 |
| source | unknown |
多个自动化job同时写共享的运行时状态文件(如 latest.json),plain overwrite 会暴露半写状态导致并发读者解析失败。
并发写同一文件没有同步机制;"顺序执行正常"不等于"并发安全"。
写共享JSON时使用:临时文件 + 原子 rename
import os, json, tempfile
def write_json_atomic(path, data):
with tempfile.NamedTemporaryFile('w', delete=False, dir=os.path.dirname(path)) as f:
json.dump(data, f)
tmp = f.name
os.rename(tmp, path)在多个job同时调度场景下,读者不会看到 JSON 解析错误