Подтвердить что ты не робот

Как я могу получить данные ini в пирамиде?

В проекте пирамиды есть development.ini или production.ini. Я добавляю свои собственные данные конфигурации в файлы ini, такие как:

[thrift]
host = 0.0.0.0
port = 8080

и я хочу использовать данные конфигурации в одном из файлов py в проекте. Как я могу получить данные без объекта запроса? (Я видел решение, которое использует запрос.)

4b9b3361

Ответ 1

Вы можете получить доступ к настройкам в request.registry.settings или pyramid.threadlocal.get_current_registry().settings. Он ведет себя как словарь.

Если вы хотите использовать второй, который получает настройки без запроса, я должен вас предупредить. Согласно документ:

Эта функция должна использоваться чрезвычайно экономно, обычно только в блоке тестовый код. его почти всегда обычно ошибочно использовать get_current_registry вне контекста тестирования, поскольку его использование делает можно написать код, который не может быть легко протестирован, и сценарий.

Любая часть вашего кода, которая нуждается в доступе к настройкам, является частью веб-приложения и должна обращаться к запросу, а не к каким-либо магически доступным глобальным. Вы можете подумать, что у вас есть веская причина, но, вероятно, лучший способ. Если вы хотите обсудить это (возможно, в другом вопросе, если это будет сложно, как поможет какой-то код), я буду рад помочь вам найти чистый способ сделать это.

Ответ 2

Всякий раз, когда мне интересно, как что-то делать в пирамиде, я обычно ссылаюсь на один из примеров пирамиды на github.

Пример Parsing Pyramid Config

Я не знаю, как они "пирмадичны", но они отлично работают. Здесь они просто используют ConfigParser так же, как в любом проекте python для анализа ваших файлов .ini

Ответ 3

Подумайте "питон", а не "пирамиду".

import ConfigParser

config = ConfigParser.ConfigParser()
config.read('development.ini')
db_url = config.get('app:main', 'sqlalchemy.url')