# dispatcher
# demo1
from loguru import logger
class Dispatcher(metaclass=DispatcherMeta):
def __init__(self, dispatcher_name):
self.dispatcher_name = dispatcher_name
self.dispatcher_func = {}
def register(self, name):
def wrapper(func):
logger.debug(f'func: {func.__name__} register to {self.dispatcher_name}')
self.dispatcher_func[name] = func
return self
return wrapper
def __call__(self, filename):
logger.debug(f'call {self.dispatcher_name}')
suffix = filename.split('.')[-1]
if suffix in self.dispatcher_func:
self.dispatcher_func[suffix](filename)
else:
logger.error(f'not support {suffix} file type')
raise NotImplementedError(f'not support {suffix} file type')
dis = Dispatcher('dis')
@dis.register('csv')
def csv_handler(*args, **kwargs):
logger.info('csv_handler')
@dis.register('json')
def json_handler(*args, **kwargs):
logger.info('json_handler')
dis("1.csv")