跳转到主要内容

针对(仅)Python应用的超简单设置管理

项目描述

1 这是什么?

如果你是一位喜欢将应用程序配置保存在简单的Python模块中的Python开发者,并且你的应用程序有一些默认设置和开发/测试/生产设置文件,收敛可以帮助你合并设置,并根据环境变量以所需的设置启动应用程序。

2 入门

2.1 易于使用

./settings/default_settings.py
-------------------
SERVER_PORT = 8000
DOMAIN = 'example.com'
ADMIN_EMAIL = 'admin@example.com'

./settings/dev_settings.py
---------------
SERVER_PORT = 9000
import settings
print(settings.SERVER_PORT)  # 9000
print(settings.DOMAIN)  # example.com
print(settings.get('VAR_THAT_DOESNT_EXIST'))  # None

2.2 安装

pip install converge

2.3 支持的环境变量

_所有指令都是可选的_。

APP_MODE

有效值有

  • dev(默认值)

  • test

  • staging

  • beta

  • prod

根据适当的模式(如果可用),将使用相应的设置模块

SETTINGS_DIR

默认为“settings”。

如果你的设置文件在不同的目录中,请使用SETTINGS_DIR将收敛指向正确的路径。

GIT_SETTINGS_REPO

支持从git仓库获取应用程序设置。如果指定了此类配置,则git仓库将被克隆到SETTINGS_DIR

GIT_SETTINGS_SUBDIR

如果你使用同一个git仓库托管多个应用程序的配置,并且设置文件在不同的子目录中

示例

my-git-repo/
  |
  |- myapp1
  |    |
  |    |- default_settings.py
  |    |- prod_settings.py
  |
  |
  |- myapp2
export SETTINGS_DIR='appsettings'
export GIT_SETTINGS_REPO='git@github.com:shon/converge-test-settings.git'
export GIT_SETTINGS_SUBDIR='myapp1'

在这种情况下,myapp1/中的所有*_settings.py文件将被复制到appsettings。

示例

export APP_MODE='test'
export SETTINGS_DIR='settings'
export GIT_SETTINGS_REPO='git@github.com:shon/converge-test-settings.git'
export GIT_SETTINGS_SUBDIR='myapp1'

3 支持的设置文件

  • 默认值: default_settings.py

  • 模式
    • 生产: prod_settings.py

    • 开发:dev_settings.py

    • 测试:test_settings.py

    • 预发布:staging_settings.py

    • 测试版:beta_settings.py

  • 特定部署:site_settings.py

4 指南

设置文件通常是Python文件,可以包含有效的Python代码,但以下是一些用户指南:

  • 使用模块变量进行全局应用程序配置

  • 在命名设置变量时使用大写字母

  • 对于值,首选基本的Python数据类型,如字符串、整数、元组

  • 例如:SERVER_PORT = 1234

  • 避免复杂的Python操作

  • 使用简单的类进行配置部分
    class DB:
        HOST = 'db.example.com'
        PORT = 1234
  • 使用简单的字符串操作以避免重复
    BASE_DOMAIN = 'example.com'
    API_URL = 'api.' + BASE_DOMAIN``

5 覆盖设置

在site_settings.py中定义模块变量

5.1 示例

default_settings.py

SERVER_PORT = 9999

site_settings.py

SERVER_PORT = 8888

6 覆盖部分设置

示例

default_settings.py

class DB:
    HOST = 'db.example.com'
    PORT = 1234

site_settings.py

DB.PORT = 1111

7 (略微)高级使用

如果要将所有settings.py文件保存在一个目录中,请使用SETTINGS_DIR环境变量。

7.1 使用SETTINGS_DIR

export APP_MODE='prod'
export SETTINGS_DIR='settings/fat_server'

这对于需要部署具有不同配置的多个应用程序实例非常有用

`-- settings/
     |
     |-- server1/
     |      |
     |      |--default_settings.py
     |      |--prod_settings.py
     |
     |-- server2/
     |      |--default_settings.py
     |      |--prod_settings.py
     |
     |

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

converge-1.1.1.tar.gz (5.0 kB 查看哈希)

上传时间

支持者: