Форум сайта python.su
Доброго всем! Есть брокер сообщений NATS (https://github.com/nats-io/nats.py). На базе этой библиотеки я сделал класс с необходимым функционалом и теперь хочу сделать API для общения сервисов через этот класс. Вот как выглядит реализация взаимодействия сервисов:
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) #подписались на топик и зарегали колбек
Отредактировано Gorg (Июнь 23, 2023 07:15:46)
Офлайн
не корректное название топика. NATS по сути не причем, вопрос в том, как сделать свое API на базе существующего колбека, наверное так
Отредактировано Gorg (Июнь 23, 2023 07:15:37)
Офлайн
GorgЛучше с самого начала начни. Сделай не класс, а интерфейс сначала. Напиши взаимодействие с этим интерфейсом. А потом под интерфейс делай программную часть уже, которая через этот интерфейс сможет быть задействованной.
На базе этой библиотеки я сделал класс с необходимым функционалом и теперь хочу сделать API для общения сервисов через этот класс.
GorgМожешь это всё спокойно выкинуть. Неправильное проектирование привело к тому, что ты просто застрял на какой-то простой вещи.
тут создается колбек для внешнего запроса(текстовое сообщение) и внутри колбека с помощью match|case должны вызываться функции сервиса в зависимости от этого запроса
Отредактировано py.user.next (Июнь 24, 2023 11:13:54)
Офлайн