在太原小店区台式电脑的 Python 依赖图排查中,TopologicalSorter.prepare() 检测到循环会抛出 CycleError,但这不等于所有节点都不可取。按 Python 3.14 标准库机制,prepare() 标记图完成并查环;有环时抛错后,get_ready() 仍可取得不被循环阻塞的节点,直到循环使进展停止。因此可能取到可处理节点,但只说明这些节点当前就绪,不证明整图完成,也不能在排查中重跑真实依赖任务。

AI台式电脑工作台示意图
AI台式电脑维护示意图,非真实门店、技师或客户实拍。

适用:本题针对 Python 3.14 标准库 graphlib.TopologicalSorter 的依赖图检查,用于台式电脑维护程序或离线分析脚本,以已有去敏代码、依赖边和日志核对。调用 prepare 后图不能修改,不能再 add;若排序已由 static_order 或 get_ready 启动,再调用 prepare 会触发 ValueError;3.14 中排序未开始前可多次调用 prepare。排查只做核对,不运行业务任务,不改原数据。

观察:先只读去敏依赖边、prepare调用与原CycleError记录,区分环内节点、依赖环的节点和与环无关的分支。官方允许报环后继续get_ready;但每个就绪节点只报告一次,需要在对应节点真正完成后由done登记,才会解锁其后继。没有再次返回节点,可能因为前面取出的节点尚未done,不能仅凭空结果断言已被环卡住或全图完成。查看现有日志中get_ready与done的对应关系,不在生产中调用或执行真实任务;只在有权限的离线图副本讨论算法状态,也不能把未执行业务的节点虚报done。

风险:把取到可处理节点误读为整图可完整排序,会漏掉 CycleError 背后的循环;为继续推进而重跑真实依赖任务,可能改变外部状态或造成重复操作。prepare 后继续 add,或在排序已启动后重复 prepare,还会产生与环无关的异常,干扰判断。技术排查应与客户业务执行分开。

下一步:整理去敏材料,包括 Python 版本、节点与依赖边、CycleError 文本、get_ready 返回顺序和停止条件、是否调用过 static_order 或 get_ready、是否尝试 add,并去除客户业务数据。需要进一步对接时,可说明位于太原小店区、使用台式电脑环境,拨打 400-877-9605 咨询电脑快修网;该号码只作咨询,平台是信息展示与第三方维修对接平台,实际范围和安排需确认。