factory/apps/utils/decorators.py

24 lines
678 B
Python

import logging
from functools import wraps
from apps.utils.tasks import send_mail_task
import traceback
myLogger = logging.getLogger('log')
def auto_log(name='', raise_exception=True, send_mail=False):
def decorate(func):
@wraps(func)
def wrapper(*args, **kwargs):
try:
real_func = func(*args, **kwargs)
return real_func
except Exception:
myLogger.error(name, exc_info=True)
if send_mail:
send_mail_task.delay(message=traceback.format_exc())
if raise_exception:
raise
return wrapper
return decorate