Я хотел бы знать, как редактировать реестр пирамиды во время выполнения. Ну, я не совсем уверен, что мне нужно изменить.Добавление маршрутов динамически в пирамиду
Я знаю, что могу расширять пирамиду с помощью config.include (...). Но как только вызывается config.make_wsgi_app(), похоже, нет способа добавить маршруты или новые каталоги mako. Любое изменение регистрации в threadlocals или настройках не влияет на поведение приложения.
Моя цель - добавить плагин во время выполнения. Вот пример использования.
Кто-то установить мою Appserver работает пирамида ... затем установить некоторые плагины
пункт установить page_plugin
затем в/конфиги
Там приведен список установленных плагинов, и вы можете выбрать, какие из них являются активирован или нет. В настоящее время я знаю только один способ сделать это:
Использование entry_points Я могу видеть мои плагины и в основной функции пирамиды, я могу зарегистрировать плагины. Используя файловое хранилище, я могу проверить каждое состояние плагинов: [установить, установить, удалить, удалить, отключить]
Таким образом я могу с самого начала установить/удалить мои плагины.
Для просмотра любых изменений необходимо перезагрузить сервер.
состояния установки: будет установлен на следующей загрузке установлен: установлен и активен удаления: будет удалить при следующей загрузке неустановленных: деинсталлируется отключен: не удаляется, но не активировали
установки/удаления используются при необходимости настроить базу данных
Я думаю, что нет другого другого способа сделать это, поскольку нет «remove_view». Возможно, я могу перезагрузить сервер. И он загрузит новую конфигурацию.
[EDIT]
Там нет функции для удаления маршрута или antyhing. Я полагаю, что realoding сервер, вероятно, является простым и простым способом сделать это ... и, вероятно, чище перезагрузить сервер, чем забыть выгружать некоторые материалы из плагинов.
Это действительно интересно, мне нужно взглянуть на это, и я придумаю какой-то результат, я думаю. –
Кажется, хорошо работает спасибо, я использую обход в настоящее время в одном проекте, так как я использую зодб, и мне кажется, что это единственный логический способ сделать это. У меня есть другой проект с mongodb, который в настоящее время определяет их собственные маршруты, но я считаю, что могу добиться такого же результата с обходом. Исходя из пилонов, я действительно привык к маршрутам и испугался магии за обход –
У меня все еще есть вопрос, когда вы говорите, что редактирование реестра не является потокобезопасным. Вы имеете в виду, что если два человека редактируют реестр, он потерпит неудачу или, к сожалению, принесет неожиданный результат. должен будет посмотреть, как это делается, но я вижу две возможности. Конфигуратор конфигурации конфигурации, а затем нажмите его в реестр и полностью перезаписать. Или нажимайте только новые или измененные конфиги. Мое предположение переписывается. Поэтому, если кто-то редактирует, когда кто-то его редактирует. Изменения никогда не будут сохранены. Я не думаю, что сейчас это очень важно, но хорошо иметь в виду. –