25 lines
719 B
Python
25 lines
719 B
Python
import asyncio
|
|
|
|
|
|
def retryable(func):
|
|
max_retries = 5
|
|
|
|
async def func_wrapper(*args, **kwargs):
|
|
for i in range(1, max_retries):
|
|
try:
|
|
return await func(*args, **kwargs)
|
|
except Exception as ex:
|
|
if i > max_retries:
|
|
raise ex
|
|
sleep_time = i * 2
|
|
print(
|
|
"Error while getting the data from source:"
|
|
" decorator is going to sleep for %s seconds"
|
|
" and retry it again (%s/%s)" % (
|
|
sleep_time, i, max_retries
|
|
)
|
|
)
|
|
await asyncio.sleep(sleep_time)
|
|
|
|
return func_wrapper
|