first commit

This commit is contained in:
mol
2023-02-04 00:14:50 +08:00
commit a2f1b6d4fd
51 changed files with 839 additions and 0 deletions

65
ExceptionHandler.py Normal file
View File

@ -0,0 +1,65 @@
import logging as logger
class ExceptionHandler(object):
"""异常处理器,可以自行实现错误的捕获、熔断、服务降级等"""
def __init__(self, decorator=None):
if not decorator:
return
# 使用自定义装饰器覆盖
self.decorator = decorator
def handle(self, e, *args, **kwargs):
"""异常处理
:param e:
:param args: request args
:param kwargs: request kwargs
:return: tuple(content, status, headers)
:rtype: tuple
"""
raise NotImplementedError
def decorator(self, func):
def wrapper(*args, **kwargs):
try:
return func(*args, **kwargs)
except Exception as e:
logger.debug("Exception handle")
return self.handle(e, *args, **kwargs)
return wrapper
class InboundHandler(object):
"""输入处理管道,可自定义一系列拦截器处理请求信息,如验证、鉴权、数据解码、参数包装等"""
#__metaclass__ = 'ABCMeta'
def handle(self, request, *args, **kwargs):
"""
:param dict request: 请求信息 (初始url, parameters, data, method),可根据需要添加
:return: (request, args, kwargs)
"""
raise NotImplementedError
def __call__(self, request, *args, **kwargs):
return self.handle(request, *args, **kwargs)
class OutboundHandler(object):
"""输出处理管道,可自定义一系列拦截器处理返回信息,如返回码处理、数据编码等"""
# __metaclass__ = 'ABCMeta'
def handle(self, response, headers, status, content, *args, **kwargs):
"""
:param requests.Response response: origin http response
:param dict headers: the response headers which will be responded
:param int status: the status code which will be responded
:param str content: the content which will be responded
:return: tuple(headers, status, content)
"""
raise NotImplementedError
def __call__(self, response, headers, status, content, *args, **kwargs):
return self.handle(response, headers, status, content, *args, **kwargs)