0

ツイストでシンプルなサーバーを作成しています。構成値を yaml ファイルに保存したいと考えています。アプリ固有の構成でねじれたサービスまたはアプリケーションを構成する例が見つかりません。

私が提供している実際の Resource オブジェクトはリクエストごとに作成されるため、明らかに、これは構成ファイルを読み取るのに適切な場所ではありません。

おそらく工場で構成ファイルを読み取り、Site をサブクラス化してリソースに渡しますか? どこにも文書化されたパターンが見つからないようです。

これが私のコードです:

#!/usr/bin/env python

from twisted.internet import reactor
from twisted.web.server import Site
from twisted.web.resource import Resource
import yaml

def load_config():
    return yaml.load(file('./test/config_file.yaml', 'r'))

# how can I make this resource have access to my config?
class ScaledImage(Resource):
    isLeaf = True

    def render_POST(self, request):
        return """
<h1>image scaled</h1>
    """

factory = Site(ScaledImage())
reactor.listenTCP(8000, factory)
reactor.run()
4

1 に答える 1

1

これを変更するだけではどうですか:

factory = Site(ScaledImage(load_config(...)))

次に、ScaledImageイニシャライザに構成を受け入れさせます。

一般的なポイントとして、おそらく構成全体を渡すべきではありません。構成ファイルは通常、ランダムなものの大きな紛らわしいボールになります。このような大混乱を API に押し付けたくはありません。代わりに、関心のある構成の一部を選択して渡します。ScaledImage

config = load_config(...)
scaleFactor = getScaleFactorFromConfig(config)
factory = Site(ScaledImage(scaleFactor))
于 2013-07-06T12:39:18.287 に答える