如何加载自定义配置文件?

时间:2013-07-06 10:57:41

标签: python twisted

我正在创建一个带有扭曲的简单服务器。我想将配置值存储在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()

1 个答案:

答案 0 :(得分:1)

如何改变这个:

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

然后让您的ScaledImage初始值设定项接受配置。

总的来说,您可能不应该传递整个配置。配置文件通常最终成为随机内容的混乱球。你不想通过你的API推动这一大问题。相反,选择ScaledImage感兴趣的配置并传递

config = load_config(...)
scaleFactor = getScaleFactorFromConfig(config)
factory = Site(ScaledImage(scaleFactor))