in services/utils/__init__.py [0:0]
def handle_exceptions(func):
"""Catch exceptions and return appropriate HTTP error."""
@wraps(func)
async def wrapper(*args, **kwargs):
try:
return await func(*args, **kwargs)
except Exception as err:
# pass along an id for the error
err_id = getattr(err, 'id', None)
# either use provided traceback from subprocess, or generate trace from current process
err_trace = getattr(err, 'traceback_str', None) or get_traceback_str()
if not err_id:
# Log error only in case it is not a known case.
err_id = 'generic-error'
logging.error(err_trace)
return http_500(str(err), err_id, err_trace)
return wrapper