From fd5817fdccfed7c77b1665fce8e0f69bf4c359e1 Mon Sep 17 00:00:00 2001 From: spadkins Date: Thu, 31 Jul 2025 12:11:14 +0800 Subject: [PATCH] fix: align AsyncNode retry mechanism with Node implementation - Change AsyncNode._exec() to use self.cur_retry instead of local variable i - Ensures consistency between sync and async retry mechanisms - Fixes AttributeError when accessing cur_retry in derived classes - Maintains backward compatibility while resolving retry tracking inconsistency --- pocketflow/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pocketflow/__init__.py b/pocketflow/__init__.py index a7203df..0b71858 100644 --- a/pocketflow/__init__.py +++ b/pocketflow/__init__.py @@ -62,10 +62,10 @@ class AsyncNode(Node): async def exec_fallback_async(self,prep_res,exc): raise exc async def post_async(self,shared,prep_res,exec_res): pass async def _exec(self,prep_res): - for i in range(self.max_retries): + for self.cur_retry in range(self.max_retries): try: return await self.exec_async(prep_res) except Exception as e: - if i==self.max_retries-1: return await self.exec_fallback_async(prep_res,e) + if self.cur_retry==self.max_retries-1: return await self.exec_fallback_async(prep_res,e) if self.wait>0: await asyncio.sleep(self.wait) async def run_async(self,shared): if self.successors: warnings.warn("Node won't run successors. Use AsyncFlow.")