热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python中的应用程序配置文件

如何解决《Python中的应用程序配置文件》经验,求大佬解答?

我正在设计一个多租户工作负载自动化软件(可自动运行Jobs的软件)。为此,我正在创建一个默认的Job配置类。默认情况下,此类中指定的配置将应用于所有类型的作业。

租户(作业的所有者)可以选择针对其特定类别的作业覆盖这些默认配置。

例如:

# Default configurations for all types of Jobs
class DefaultConfigurations:

    def __init__(self, job_defintion):
        self.job_state_database = DEFAULT_DB
        self.job_definition_repository_type = DEFAULT_REPO
        .... 
        # there will be 100's of configurations like this. 

现在,如果某些租户想要为其特定类型的作业覆盖默认应用程序配置,则他们可以继承DefaultConfiguration类并覆盖他们想要覆盖的配置。

例如:

# These overridden configurations will be applied to all the HiveJobs.
class HiveJobs(DefaultConfigurations):

     def __init__(self, job_definition):
        self.job_state_database = "sql"
        self.job_definition_repository_type = "svn"

# These overridden configurations will be applied to all the SparkJobs.
class SparkJobs(DefaultConfigurations):

     def __init__(self, job_definition):
        self.job_state_database = "MongoDb"   
        if (job_definition.technology == "Old")
            self.job_state_database = "sql"  

对于所有其他类型的作业,将使用默认配置。

各个作业也有其定义(以XML形式提及)。在单个作业定义XML文件中,还指定了作业类。例如,Hive Job将在其定义中将其类指定为“ hive”。

一个配置单元作业的job_definition文件示例:



    name hello_world_from_hive
    class hive
    command echo "hello world from Hive"

    cron_schedule 5 4 * * * 


在运行时,Job Executor将检查其定义文件中指定的Job类,并相应地选择配置类(例如,上例中的DefaultConfigurations,HiveJobs或SparkJobs)。

Job执行程序将从XML文件构造一个job_definition对象,并将该Job定义对象传递给相应的配置类,以获取执行此作业所需的最终配置。这是必需的,因此也可以基于某些运行时参数来添加/删除某些配置。请注意,首选项将优先于各个作业定义文件中覆盖的配置。

我不确定以上方法是否是用Python编写此类配置文件的最佳方法。


推荐阅读
author-avatar
酷的带_201
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有