textpython配置文件,多级配置,多环境配置(代码片段)

author author     2022-12-01     347

关键词:

# 参考链接: https://www.hackerearth.com/zh/practice/notes/samarthbhargav/a-design-pattern-for-configuration-management-in-python/
# 下面是我自己写的程序的使用实例
# 背景:
# 1. 有通用配置;
# 2. 分钟级程序配置;
# 3. 15分钟级程序配置;
# 读取的时候, 直接用类对象即可, 无需创建一个实例.

#coding:utf-8

import logging
from . import const

class Setting():
    # 由于数据会先写入clickhouse内存表, 一批次写入过多数据会将内存耗尽,
    # 经评估一分钟的数据量约为80w+条, 则60文件夹最大单次插入clickhouse缓冲表数据量约为2400w+条
    MAX_DATE_PER_TRIGGER = 60
    BATCH_INTERVAL = 20 * const.SECOND
    LOGGING_LEVEL = logging.INFO
    LOGGING_FORMAT = '%(asctime)s %(levelname)s %(name)s: %(message)s'
    EXCEPTION_LIMIT_PER_ALARM = 30
    RETEY_TIMES = 10
    SOURCE_DELAY_ALARM_INTERVAL = 2 * const.HOUR

    SOURCE_LIST_FOR_UNION_JOIN = ['RTB', 'TOUTIAO', 'cpa', 'cps', 'cpd_imp_clk', 'cps_imp_clk', 'GDT']

    SOURCE_LIST_NOT_JOIN = ['result_redirect', 'CPD_JTHY']

    SOURCE_DELAY_LIMIT = 
        "RTB": 30 * const.MINUTE, # 30 min
        "TOUTIAO": 30 * const.MINUTE,
        "cpa": 2 * const.DAY + 10 * const.HOUR, # 2 day + 10 hour
        "cps": 45 * const.MINUTE,
        "cpd_imp_clk": 30 * const.MINUTE,
        "cps_imp_clk": 30 * const.MINUTE,
        "GDT": 60 * const.MINUTE,
        "CPD_JTHY": 30 * const.MINUTE,
    

    SEND_UMP_ALARM = """curl "http://jenkins.jd.com/job/send_ump_alarm/buildWithParameters?""" + \
        """token=123456" -d "UMP_KEY=jd.ad.data.lowDelay.rerun&ALARM_INFO=""" """

class MinuteLevelSetting(Setting):
    pass

class FifteenMinuteLevelSetting(Setting):
    pass
参考链接: https://docs.python.org/3.4/library/configparser.html
参考链接: https://hackernoon.com/4-ways-to-manage-the-configuration-in-python-4623049e841b


结论
====

configParser的表达能力过弱
使用python代码继承的方式, 会将配置和代码库杂合在一起, 安全性无法保证.

推荐使用多个json文件进行配置, 然后通过merge dict, 进行配置合并.

ConfigParser
============

- 支持类似INI配置文件的语法
- default section会为其他section提供默认值
- 使用get方法, 可以指定fallback值, 但是default section优先级大于fallback值.
- 支持插值
- boolean类型的需要用指定的api: getboolean()进行获取, configparser内部所有的存储都是字符串的形式.

示例结构:
[DEFAULT]
ServerAliveInterval = 45
Compression = yes
CompressionLevel = 9
ForwardX11 = yes

高级插值

[Common]
home_dir: /Users
library_dir: /Library
system_dir: /System
macports_dir: /opt/local

[Frameworks]
Python: 3.2
path: $Common:system_dir/Library/Frameworks/

[Arthur]
nickname: Two Sheds
last_name: Jackson
my_dir: $Common:home_dir/twosheds
my_pictures: $my_dir/Pictures
python_dir: $Frameworks:path/Python/Versions/$Frameworks:Python
[bitbucket.org]
User = hg

[topsecret.server.com]
Port = 50022
ForwardX11 = no

springboot:配置文件-多环境配置

一、多环境配置的好处1.不同环境配置可以配置不同的参数2.便于部署,提高效率,减少出错二、Properties多环境配置1.配置激活选项spring.profiles.active=dev说明:这里激活的是开发环境。2.添加其他配置文件如: 开发环境:applica... 查看详情

详解springboot配置文件之多环境配置

一.多环境配置的好处:1.不同环境配置可以配置不同的参数~2.便于部署,提高效率,减少出错~二.properties多环境配置1.配置激活选项spring.profiles.active=dev2.添加其他配置文件application.properties:#激活哪一个环境的配置文件spring.profiles... 查看详情

springboot基础多环境配置

对于多环境的配置,各种项目构建工具的思路基本上一致,都是通过配置多份不同环境的配置文件来区分。 1.首先我们先创建不同环境下的属性文件,截图如下:application.properties 是基础属性配置文件application-develop.propert... 查看详情

springboot多环境下多个配置文件规范配置方案

参考技术A遇到的问题:1、单个配置文件过大、多人协同困难2、每一个环境又要部署给不同的租户解决方案:1、所有环境都一致且不会修改的配置放在application.yml里2、每个环境创建该环境的配置文件夹,该环境下用到的配置都... 查看详情

springboot项目application.properties多环境配置文件jar包外部配置文件

...ication.properties文件存放及使用介绍 二、方法一多环境配置文件我们一般都会有多个应用环境,开发环境、测试环境、生产环境,各个环境的配置会略有不同,我可以根据这个创建多份配置文件,由主配置文件来控制读取那个... 查看详情

阿里nacos-配置-多环境(代码片段)

多环境的配置隔离是配置中心最基础的一个功能之一。不同的环境配置的值不一样,比如数据库的信息,业务的配置等。SpingBoot多环境配置首先我们来回顾下在SpringBoot中用配置文件的方式怎么进行环境的隔离。默认我们都会创... 查看详情

springboot多环境配置及配置文件分类

一、多环境配置在工作中,对于开发环境、测试环境、生产环境的配置肯定都不相同,比如我们开发阶段会在自己的电脑上安装mysql,连接自己电脑上的mysql即可,但是项目开发完毕后要上线就需要该配置,将... 查看详情

springboot多环境配置及配置文件分类

一、多环境配置在工作中,对于开发环境、测试环境、生产环境的配置肯定都不相同,比如我们开发阶段会在自己的电脑上安装mysql,连接自己电脑上的mysql即可,但是项目开发完毕后要上线就需要该配置,将... 查看详情

springboot-多环境配置

...环境test以及发布环境prod。不同的环境可能会对应不同的配置内容,如果手动更改运行环境配置,会显得非常繁琐与低效。因此,SpringBoot提供了一套机制可以很容易地让我们进行多环境配置。假设现在我们需要往返于两个运行环... 查看详情

springboot多环境下配置文件

...一下springboot下不同环境(测试环境、生产环境)下不同配置文件的加载方式,本文是通过修改pom文件中的参数进行配置,具体方法如下:1、首先要建立三个配置文件:application.yml、application-dev.yml、application-prop.yml,在dev以及prop... 查看详情

spring-boot多环境配置文件

spring-boot多环境配置文件目录配置多环境配置文件名称要遵循格式application-{profile}.ymlapplication.ymlspring:profiles:active:prodapplication-dev.ymlserver:port:8000application-prod.ymlserver:port:8001运行mvninstall将项目打包后通过如下命令来执 查看详情

多环境下读取不同的配置文件

一、准备不同环境的配置文件 二、在pom文件中定义一个变量,名称随意,该变量用于动态更改配置properties,字面意思就是配置咯,就像是pom文件中的变量咯,这样理解吧。 三、设置profiles四、build设置第三步我们默认激... 查看详情

springcloud配置中心多环境配置bootstrap.yml

一:springboot多环境配置文件我们知道springboot可以通过文件名来区分配置,如下:application.ymlapplication-dev.yml#开发环境application-test.yml#测试环境application-prod.yml#正式环境二:springcloud多环境配置文件但是springcloud用 查看详情

springboot-使用yml文件配置多环境

两种配置方式1:在一个yml文件中,2:在多个yml文件中1一个yml文件application.ymlspring: profiles:  active:dev---#开发环境配置spring: profiles:devserver: port:1000---#测试环境配置spring: profiles:stgserver:  查看详情

多环境变量配置

多环境变量配置为什么要配置环境变量,配置环境变量有什么好处总结为什么要配置环境变量,配置环境变量有什么好处一个产品的开发过程中,一般来说都是会经历这么一个过程.本地发开–测试版本部署–测试–预上线... 查看详情

nginx配置二级域名(多级域名)

...dujitang.flywill.cn,由于我的服务器是Nginx,于是就有了这篇配置二级域名的文章。先谷歌了一下,得到的结果这里用的是单文件配置的,很明显,这样不优雅。我使用的是多文件配置,先看下配置文件在http结构中include/etc/nginx/conf.... 查看详情

vue多环境配置之.env配置文件(代码片段)

Vue之.env环境配置文件.env文件是运行项目时的环境配置文件。但是在实际开发过程中,有本地环境、测试环境、预生产、生产环境等等,不同环境对应的配置会不一样。因此,需要通过不同的.env文件实现差异化配置。... 查看详情

vue多环境配置--切换生产环境、测试环境和开发环境

....test(测试环境)、.env.production文件(生产环境)2、三个配置文件的配置内容如下:.env.development(开发环境)配置内容.env.test(测试环境)配置内容.env.production文件(生产环境)配置内容3、修改vue.config.jsmodule.exports=//基本路径... 查看详情