侧边栏壁纸
博主头像
EinTao博主等级

昨天再好,也走不回去;明天再难,也要抬脚继续。

  • 累计撰写 32 篇文章
  • 累计创建 3 个标签
  • 累计收到 1 条评论
标签搜索

目 录CONTENT

文章目录

odoo内定义装饰器,简化try:except

EinTao
2022-11-27 / 0 评论 / 0 点赞 / 29 阅读 / 208 字
  • 定义装饰器
def serialize_exception(interface_name):
    """
    mq接口装饰器
    主要作用:日志记录、报错统一处理
    :param method:
    :return:
    """
    def decorator(func):
        @wraps(func,interface_name)
        def wrapper(self, *args, **kwargs):
            result = False
            msg = interface_name + u'##开始##:' + str(fields.Datetime.now())
            _logger.info(msg)
            mq_log = self.env['spd.ibm.mq.interface.logs'].create({
                'queue_name': interface_name,
                'time': fields.Datetime.now(),
                'message':msg
            })
            try:
                con = self._context.copy()
                con['lang'] = 'zh_CN'
                self = self.with_context(con)
                result = func(self, mq_log, *args, **kwargs)
                msg = interface_name + u'##正常结束##:' + str(fields.Datetime.now())
                _logger.info(msg)
                mq_log.write({'message':msg})
            except:
                self.error_fun(mq_log)
                msg = interface_name + u'##错误结束##:' + str(fields.Datetime.now())
                _logger.info(msg)
                mq_log.write({'message': msg})
            finally:
                self.close()
                return result
        return wrapper

    return decorator
  • 使用装饰器
@serialize_exception('HDSPD_regDrugsInfoMdm’)
@api.model
def sync(self, log=None):
    pass

0

评论区