【问题标题】:How to load custom configuration file with twisted?如何使用扭曲加载自定义配置文件?
【发布时间】:2013-07-06 10:57:41
【问题描述】:

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

【问题讨论】:

    标签: python twisted


    【解决方案1】:

    改变这个怎么样:

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

    然后让您的 ScaledImage 初始化程序接受配置。

    一般来说,您可能不应该传递您的整个配置。配置文件通常最终会变成一大堆令人困惑的随机东西。您不想通过您的 API 推动这个大混乱。相反,选择ScaledImage 感兴趣的配置并将that 传入:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-05
      • 1970-01-01
      • 1970-01-01
      • 2014-05-03
      • 1970-01-01
      • 2020-08-02
      • 2019-10-26
      相关资源
      最近更新 更多