import json
import os
import tempfile
from pathlib import Path


def append(path, key, value):
    record = json.dumps({"key": key, "value": value}) + "\n"
    with path.open("a", encoding="utf-8") as log:
        log.write(record)
        log.flush()
        os.fsync(log.fileno())


def recover(path):
    state = {}
    for line in path.read_text(encoding="utf-8").splitlines():
        record = json.loads(line)  # 损坏时明确失败
        state[record["key"]] = record["value"]
    return state


with tempfile.TemporaryDirectory() as directory:
    path = Path(directory) / "commands.log"
    append(path, "task-17", "accepted")
    # 模拟：还没有更新内存，进程就退出了。
    state = recover(path)
    assert state["task-17"] == "accepted"
    append(path, "task-17", "finished")
    assert recover(path)["task-17"] == "finished"
    print("已确认的状态可从日志恢复")
