Celery 5.5.2访问AsyncResult.status属性时随机触发RecursionError
Celery异步任务状态查询出现循环调用异常
代码实现
task_id = payload.task_id task_result = AsyncResult(task_id) if task_result.status == "SUCCESS": print("I am happy")
环境配置
Celery仅做基础配置:将broker和backend设置为同一RabbitMQ实例,其余均为默认配置。
问题现象
无法稳定复现该异常,仅在使用随机ID(123)时连续出现过两次异常。片刻后恢复正常,返回PENDING状态。
异常堆栈中的循环调用链
查看堆栈跟踪后,发现存在以下循环调用逻辑:
self.connection.drain_events(timeout=timeout) while not self.blocking_read(timeout): return self.on_inbound_frame(frame) callback(channel, method_sig, buf, None) return self.channels[channel_id].dispatch_method( listener(*args) self._do_revive() self.open() return self.send_method( return self.wait(wait, returns_tuple=returns_tuple) self.connection.drain_events(timeout=timeout)
内容的提问来源于stack exchange,提问作者Christian
相关产品推荐
相关产品推荐

