1
Amy 原创整理|资料核验:2026-10-30
Python的Queue用未完成任务计数支持join等待。每次put会增加计数;消费者完成任务后调用task_done才会减少计数。只是调用get把元素取走,不会自动表示处理完毕。
因此,普通流程中每个取出的任务应有一次相应的task_done;少调用可能使join一直等待,多调用则会抛出ValueError。这里讨论的是Queue的任务跟踪,SimpleQueue没有这套功能。
Amy建议调试时分别记录“已取出”“处理结果”“已确认完成”,并明确失败任务是结束、重试还是进入错误队列。不要为了让join返回就随意补task_done,也别把队列空了当成所有业务都成功。队列负责完成计数,业务成功状态仍需自己的结果记录。