2011-05-20 11 views
3

私はそのB itBucket repositoryで見つかったことに基づいてCherryPyアプリケーションを開発しています。CherryPy:グローバル設定へのアクセス

この例のように、server.cfg(別名「グローバル」)とapp.cfgの2つの設定ファイルがあります。

どちらの設定ファイルは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'] 

ワークス[データベース]パラメータがapp.cfgにある場合にのみ。

cherrypy.request.app.configを印刷しようとしましたが、app.cfgに定義された値だけが表示され、server.cfgには何も表示されません。

だから私は二つの関連質問があります:

  • はそれがでSERVER.CFGコンフィギュレーション(別名グローバル)にアクセスする方法SERVER.CFGまたはapp.cfgファイル
  • にデータベース接続を置くのがベストです私のコード

ありがとうございました! :)

答えて

3

アプリの設定に入れてください。あなたがそのようなものを置く場所を決めるのを助ける良い質問は、 "同じサーバー上の/blogsに無関係なブログアプリをマウントした場合、その設定を共有したいのですか?"もしそうなら、それをサーバ設定に入れてください。そうでない場合は、アプリの設定でそれを入れてください。

グローバルコンフィグレーションはセクション化されていないため、とにかに[Database]セクションを貼り付けることはできません。アプリの設定のみがセクションを許可します。とにかくグローバル設定でデータベース設定を固定したい場合は、代わりに "database_port"のような設定エントリ名を考慮する必要があります。その名前で直接アクセスします:cherrypy.config.get("database_port")

+0

素晴らしい!ありがとう! :) –

関連する問題