2011-05-20 2 views
3

Я работаю над приложением CherryPy на основе того, что я нашел на этом B itBucket repository.CherryPy: Доступ к глобальной конфигурации

Как и в этом примере, существует два конфигурационных файла: server.cfg (aka «global») и app.cfg.

Оба конфигурационные файлы загружаются в файле serve.py:

# Update the global settings for the HTTP server and engine 
cherrypy.config.update(os.path.join(self.conf_path, "server.cfg")) 

# ... 

# Our application 
from webapp.app import Twiseless 
webapp = Twiseless() 
# Let's mount the application so that CherryPy can serve it 
app = cherrypy.tree.mount(webapp, '/', os.path.join(self.conf_path, "app.cfg")) 

Теперь я хотел бы добавить конфигурацию базы данных. Моя первая мысль заключалась в том, чтобы добавить его в server.cfg (это лучшее место? Или он должен быть расположен в app.cfg?).

Но если я добавлю конфигурацию базы данных в server.cfg, я не знаю, как получить к ней доступ. Использование:

cherrypy.request.app.config['Database'] 

Работает только если параметр [Database] находится в app.cfg.

Я попытался напечатать cherrypy.request.app.config, и он показывает мне только значения, определенные в app.cfg, ничего в server.cfg.

Так у меня есть два связанных вопроса:

  • это лучше поставить соединение с базой данных в server.cfg или app.cfg файл
  • Как получить доступ к конфигурации server.cfg (он же глобальный) в мой код

Благодарим за помощь! :)

ответ

3

Поместите это в конфигурацию приложения. Хороший вопрос, который поможет вам решить, где поставить такие вещи, - «если бы я установил несвязанное приложение для блога на /blogs на том же сервере, хотел бы я поделиться им с этой конфигурацией?» Если это так, поместите его в конфигурацию сервера. Если нет, поместите его в конфигурацию приложения.

Обратите внимание, что глобальная конфигурация не разделена, поэтому вы не можете вставить раздел [Database]. Только настройки приложения позволяют разделы. Если вы все равно хотите вставить настройки базы данных в глобальную конфигурацию, вам придется учитывать имена записей конфигурации, такие как «database_port». Затем вы получите доступ к нему непосредственно под этим именем: cherrypy.config.get("database_port").

+0

Отлично! Благодаря! :) –

Смежные вопросы