-
Python 用 functools.lru_cache 缓存配置读取函数后,配置文件已经更新,接口却还返回旧值。问题通常不在文件读取,而在缓存键和清理时机。本文从一个可复现的小场景出发,说明 cache_clear、参数设计和并发刷新时需要核对的边界。
-
Python 异步接口用 asyncio.wait_for 设置超时后,日志里却还能看到后台任务继续运行,通常不是 wait_for 失效,而是任务引用、shield 或 finally 清理边界没有处理好。本文用可复现代码拆开超时取消语义,并给出资源回收和验证方法。
-
支付对账中出现 0.01 元差异时,先排除二进制浮点输入,再用 Decimal.quantize 和 ROUND_HALF_UP 固定金额舍入规则。本文从复现、定位到回归验证给出一套可运行的 Python 排查方案。
-
Python multiprocessing.Pool 在服务停机时如果没有区分 close、terminate 和 join,主进程可能已经退出流程,子进程却仍然占着资源。本文用批处理场景复现停机卡住、按顺序解释三个方法的职责,并给出异常、超时和回滚检查清单。
-
Python 服务把日志直接写入网络或磁盘时,慢 I/O 会反过来拖住请求线程。本文用 logging.QueueHandler 和 QueueListener 拆开产生日志与写日志,说明队列满载、异常处理和停机收尾的边界。
-
Python sqlite3 事务回滚经常不是数据库坏了,而是连接的 autocommit、旧式 isolation_level 与 with 代码块边界没有对齐。用一个可复现实验看清提交、回滚和异常传播。