from traceback import format_exc
import logging
from django.db import transaction
from parser.models import Error
def log_errors(real_func):
@transaction.commit_manually
def func(*args, **kwargs):
transaction.commit()
try:
result = real_func(*args, **kwargs)
except Exception, ex:
transaction.rollback()
Error.objects.create(message=format_exc(), args=args, kwargs=kwargs)
logging.error('', exc_info=ex)
transaction.commit()
return None
else:
transaction.commit()
return result
return func