uWSGI: используя режим императора, зарегистрируйте правила внутренней маршрутизации для вассалов.

Я использую uWSGI для развертывания микросервисов python wsgi.

Моя архитектура выглядит так:

  • Emperor => обрабатывает маршрутизацию всех запросов, начиная с /api
  • Вассал «пользователи» => обрабатывает запрос на /api/users
  • Вассал "платежи" => обрабатывает запрос на /api/payments
  • и т.п.

Маршрутизация осуществляется императором с использованием внутренних правил маршрутизации.

Моя проблема в том, что правила маршрутизации статически определены в файле конфигурации Emperor.

1/ Есть ли у вассала способ «динамически» (= при запуске) добавлять правила во внутреннюю таблицу маршрутизации императора?

2/ Если нет, есть ли у императора способ «получить» правила маршрутизации от вассала при его запуске?


person vinz    schedule 18.03.2015    source источник


Ответы (1)


Цель Императора — управление процессами (вассалами), концепция «маршрутизации» — это работа «основных маршрутизаторов» (fastrouter, httprouter, sslrouter, rawrouter). В вашем случае система подписки может быть лучшим решением:

http://uwsgi-docs.readthedocs.org/en/latest/SubscriptionServer.html

в 2.1 (текущий мастер github) есть возможность подписаться «по точке монтирования»

person roberto    schedule 19.03.2015
comment
Спасибо за Ваш ответ. Кажется, что функция подписки «по точке монтирования» удовлетворит некоторые из моих потребностей. - person vinz; 19.03.2015
comment
(извините, что случайно разделил мой комментарий на две части) Спасибо за ваш ответ. Кажется, что функция подписки «по точке монтирования» удовлетворит некоторые из моих потребностей. Но если мне придется обрабатывать более сложные случаи, такие как маршрутизация с использованием случайного аргумента заголовка или с использованием строки запроса, я думаю, что механизм подписки не позволит мне это сделать. Если я создам свой собственный механизм подписки, есть ли способ динамически добавлять/удалять правила во внутренней таблице маршрутизации? - person vinz; 19.03.2015
comment
да, проверьте этот пример: github.com/unbit/uwsgi/blob/ master/contrib/subscribe.pl вы можете создавать собственные пакеты подписки из внешних процессов - person roberto; 19.03.2015