0

Pyramid 構成ファイルを次のようにセットアップしました。

[app:main]
...

[server:main]
...


[memcache]
# memcache config

[zeromq]
# zeromq xonfig

今私の中にapp_factory、私はすべての設定を取得したい -app:mainセクションだけでなく、memcachezeromqおよび他の可能なセクションも。

どうすればいいですか。

app:main構成を異なるセクションに分けている理由は、アプリが多くの異なるサービスを使用しており、すべての構成をセクションにまとめたくないからです。

これを行う 1 つの方法は、構成ファイルを読み取って構成をアプリケーションに手動でプルすることです。次に、アプリが実行されているモード (開発または運用) をどうにかして知る必要があります。また、構成を複数回解析するオーバーヘッドがあります (最初に貼り付けデプロイが実行されるため)。

これに対するより良い、よりエレガントな解決策はありますか?

4

2 に答える 2

2

残念ながら、このアプローチを取りたい場合は、構成ファイルを再度解析する必要があります。でファイルを取得し、 stdlib を使用して自分で解析できconfig_file = global_config['__file__']ます。mainConfigParser

別々のセクションを持つこの INI 形式が気に入った場合、Mozilla Services には、これらすべてを処理するために使用できる素敵な小さなモジュールがあります。値の変換を行います (値を整数またはブール値にキャストしようとします)。などの他のセクションで構成を拡張することをサポートしています。[foo:bar] key = valueこれは、解析時に を含む単純な辞書を返しますsettings['foo.bar.key'] == value。また、便利に解析するので、メインは次のようになります。

def main(global_config, **settings):
    config = get_configurator(global_config, **settings)
    settings = config.registry.settings
    # ... do your app configuration
    return config.make_wsgi_app()

https://wiki.mozilla.org/index.php?title=Services/Sync/Server/GlobalConfFile https://github.com/mozilla-services/mozservices/blob/master/mozsvc/config.py

于 2013-03-08T08:30:33.073 に答える
0

アプリケーション固有の構成を ini ファイルに渡すことができます。

[app:xyz]
    something = True

次に、main関数 (アプリケーション ファクトリ) で、次のようにアクセスできます。

settings['something']

より詳しい情報:

http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/environment.html#adding-a-custom-setting

于 2013-03-12T12:37:10.793 に答える