Как стать автором
Обновить

Комментарии 2

while True:
    with Listener(daemon) as listener:
        ...

Сервер должен быть активен всегда, поэтому я запускаю его в бесконечном цикле.

И поэтому он постоянно открывает-закрывает сокет после каждого сообщения? Не лучше ли поменять строки местами?


            if request["method"] == "hello":
                response = api.hello(request)
            with Client(cli) as conn:
                conn.send(response)

Я понимаю что это демо-пример, вырванный из работающей программы, но очень режет взгляд работа с возможно неинициализированной переменной.


Я правильно понимаю что архитектурно не предусмотрена работа "сервера" с более чем одним "клиентом"?


В вашем реальном коммерческом приложении, конечно же, реализована какая-то схема безопасности? Иначе в чем разница между запуском скрипта просто от имени суперпользователя?

Начну с конца.


По поводу безопасности: в моем приложении реализована аутентификация клиента по hmac. В статье этого нет, потому что на тот момент не было и в коде. Если интересно, подробности есть в документации: https://docs.python.org/3/library/multiprocessing.html#authentication-keys


По поводу архитектуры: насколько я понимаю, опять же, из документации, сервер — многопроцессорный из коробки. То есть, для сервера не имеет значения сколько к нему обращается «клиентов», для него это все выглядит как просто запросы от процессов по IPC. При этом, серверу, чтобы обслужить запрос, достаточно чтобы у клиентского процесса (который обращается к нему в данный момент времени) совпал ключ аутентификации (если она используется).


Касательно конкретно моей архитектуры: мне не нужно много процессов — один сервер в руте и управляющий процесс на стороне пользователя. Однако это не мешает расширить функциональность до многопроцессорности, только реализация обработки запросов по API при этом изменится.


Вы правы — даже мой линтер жаловался на Unbound Variable. И с контекстным менеджером тоже глупо получилось.


Спасибо за замечания.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации