2013-07-06 66 views
0

我正在创建一个扭曲的简单服务器。我想将配置值存储在yaml文件中。我找不到配置扭曲服务或应用程序特定配置的示例。如何使用扭曲加载自定义配置文件?

由于我提供的实际资源对象将为每个请求创建,显然这不是读取配置文件的正确位置。

我可能会在我的工厂读取配置文件,然后子类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

怎么样只是改变这一点:

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

然后让你的ScaledImage初始化接受配置。

作为一般的一点,你可能不应该通过你的整个配置。配置文件通常最终会成为随机东西的大混乱球。你不想通过你的API推动这个大混乱。取而代之的是,挑选出一块配置的是ScaledImage有兴趣,并通过在:

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

这是有道理的。谢谢。 – jbrown

相关问题