From c6ecefa5fc2d9d52f095acba7993822a70b5c38f Mon Sep 17 00:00:00 2001 From: hanhxiao Date: Mon, 23 Sep 2019 18:57:42 +0800 Subject: [PATCH] fix: catch exception in hook function --- gnes/service/base.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gnes/service/base.py b/gnes/service/base.py index 5c96bc4a..fe9bfa5a 100644 --- a/gnes/service/base.py +++ b/gnes/service/base.py @@ -201,7 +201,12 @@ def call_hooks(self, msg: 'gnes_pb2.Message', hook_type: Union[str, Tuple[str]], for fn, only_verbose in hooks: if (only_verbose and self.service_context.args.verbose) or (not only_verbose): - fn(self.service_context, msg, *args, **kwargs) + try: + fn(self.service_context, msg, *args, **kwargs) + except Exception as ex: + self.logger.warning('hook %s throws an exception, ' + 'this wont affect the server but you may want to pay attention' % fn) + self.logger.error(ex, exc_info=True) def call_routes(self, msg: 'gnes_pb2.Message'): def get_default_fn(m_type):