Skip to content

Commit eff773e

Browse files
committed
feat: enhance handle_autoreconnect_async to support async generator functions
1 parent 0df9d9c commit eff773e

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

biothings/utils/mongo_async.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,23 @@ def handle_autoreconnect_async(func):
7979
MAX_RETRY = 30
8080
SLEEP_TIME = 0.5 # seconds
8181

82+
if inspect.isasyncgenfunction(func):
83+
84+
@wraps(func)
85+
async def inner_gen(*args, **kwargs):
86+
retry = 0
87+
while retry < MAX_RETRY:
88+
try:
89+
async for item in func(*args, **kwargs):
90+
yield item
91+
return
92+
except AutoReconnect:
93+
retry += 1
94+
await asyncio.sleep(SLEEP_TIME)
95+
raise MaxRetryAutoReconnectException()
96+
97+
return inner_gen
98+
8299
@wraps(func)
83100
async def inner(*args, **kwargs):
84101
retry = 0

0 commit comments

Comments
 (0)