async def api_request(msg): cmd_str = msg.data.decode() #получили сообщение от внешнего сервиса print(f"Received a message on '{msg.subject} {msg.reply}': {msg.data.decode()}") match cmd_str: case "help": # return available commands pass case "connect": # connect to server pass case "disconnect": # disconnect from server pass case "run": # start reading pass case "stop": # stop reading pass case "config": # get config pass case "status": # get current status pass case "init": # init service with new config pass case "write": # write value to node pass case "objects": # get objects pass case "test_command": # just test cmd_str = "test success!" ret_str = cmd_str await self.nc.publish(msg.reply, bytes(ret_str, 'utf-8')) #отправили ответ self.api_sub = await self.nc.subscribe("api", "workers", api_request) #подписались на топик и зарегали колбек
Получается что api реализовано прямо внутри класса, а хотелось бы вынести код API в отдельный файл как это реализовано в FastApi. Т.е. другой программист, пишет свое API без оглядки на код моего класса в отдельном файле используя декоратор. Такой подход позволит избавиться от match|case, позволит отвязать класс от других зависимостей и API можно делать любое включая опциональный функционал. Спасибо за любую информацию, самому пока ничего путного в голову не приходит