Multi-Rag / utils /asyncHandler.py
VashuTheGreat's picture
Clean commit without images
1f725d8
import sys
import traceback
from functools import wraps
from exception import MyException
def asyncHandler(fn):
@wraps(fn)
async def decorator(*args, **kwargs):
try:
return await fn(*args, **kwargs)
except Exception as e:
# Get the exact file and line number where the error occurred
tb = traceback.extract_tb(sys.exc_info()[2])
# Filter out the asyncHandler wrapper lines from the traceback payload
filtered_tb = [frame for frame in tb if "asyncHandler.py" not in frame.filename]
error_msg = f"{e}\n[Error Trace]: " + " -> ".join([f"{frame.filename}:at Line_NO:{frame.lineno}" for frame in filtered_tb])
raise MyException(Exception(error_msg), sys)
return decorator