在 Python 中管理配置的方法

在 python 中管理配置的方法

在开发服务器应用程序时,您可能会遇到管理配置的问题。当然,这个问题在任何需要配置管理的地方以及服务器应用程序中都会遇到。

如果您是初学者或没有配置管理经验,可能会有点困难。特别是,如果您有数据库信息、AWS 凭证等秘密值,那么在 Github、Bitbucket 等开放 VCS(版本控制系统)上管理配置可能会非常危险。事实上,在某些情况下,由于不小心的配置管理,Web 应用程序可能会被其他黑客攻击或夺取他们的服务器资源,从而意外地产生大量费用。因此配置管理,特别是秘密值管理是一个非常重要的问题。

就我而言,我主要开发服务器应用程序,并为每个项目以不同的方式管理配置。所以,我想介绍一下我所使用的方法,以帮助那些不太了解配置管理的人。

我主要在开发服务器应用程序时使用Python,所以我将介绍的这些方法都是在Python中工作的。当然,这些是管理配置的“方式”,因此您也可以在其他语言中使用这些想法。没有任何问题。

立即学习“Python免费学习笔记(深入)”;

在这篇文章中,我将介绍以下四种管理方式。 (但是,在这里,我不会谈论基础设施或分布式系统级别的大规模管理。我稍后会发布)

sing内置数据结构使用外部配置文件使用环境变量使用动态加载

使用内置数据结构

这是一种非常简单直观的方法。正如标题所示,它使用内置的数据结构来管理配置,基本上可以如下使用。

然后,看一个稍微复杂一点的情况。例如,如果您是 Web 开发人员,您可能需要为每个开发、测试、生产环境进行不同的配置,因此,您可以按照以下方式进行操作。

使用起来简单直观,因为您可以直接从同一项目导入配置文件并按原样使用内置数据结构。但是,如果您使用 VCS,您的代码库将暴露于世界,因此,如果存在秘密值,可能会出现安全问题。因此,您应该在 VCS 上使用虚拟数据(非真实数据)而不是真实的秘密数据,以保护您免受外部安全攻击。然后你自己将虚拟数据替换为生产服务器中的真实配置值,但是,这会很麻烦。有一种稍微高级的使用动态加载的方法,我们稍后会讨论。

因此,如果您的配置中没有秘密值,我建议您采用这种方式。

使用外部配置文件

这种方式加载外部文件中定义的配置值,而不是内置的数据结构。这是更通用的方法,因为这种方法会将配置视为只是配置,而不是代码的一部分。让我们看看使用 ini 和 json 格式作为配置的基本示例。 (请注意,configparser适用于Python 3.x,在Python 2.x中,您应该使用ConfigParser)

您还可以使用其他格式,例如xml、yaml。基本方法是相同的,因此,如果有解析格式的方法,任何格式都可以。

在这种方法中,配置将与代码分离,因此如果您使用 Git,只需指定要从 VCS 忽略的文件。但是,当配置与 VCS 完全分离时,您的同事可能无法使用该配置。因此,您可以使用以下提示来解决此问题。

假设 config.json 具有真实的配置值。然后创建一个示例配置文件,其名称表明它是一个示例,例如 config.json.example。并且您应该在 VCS 上管理唯一的 config.json.example 而不是 config.json。这允许其他开发人员了解格式并自行操作配置。当然,他们应该使用 config.json 重命名该文件名,以正确地将其用作配置。

使用环境变量

这种方式不使用文件,而是使用系统环境变量作为配置值。

配置值不作为单独的文件进行管理,因此暴露秘密值的风险较小,并且它非常易于使用,可以在代码库中的任何位置使用。

但是,当然,最终您可能必须使用 shell 脚本或其他脚本来系统地管理每个环境变量。因此,如果您熟悉系统和脚本,那么这种方法适合您。但是,如果某些环境无法使用环境变量,例如 Apache、Nginx Web 服务器,则应该使用其他方式。

使用动态加载

如上所述,这是一种比使用内置数据结构更高级的方法。以前的方法应该从需要使用配置的特定文件中导入配置.py文件,因此,配置文件必须位于可导入的路径上。但是,在这种方法中,配置文件不必位于可导入的路径上,甚至可以位于其他存储库上。

原理就这么简单。只需动态注册并加载配置.py文件的路径即可。即,请参阅以下内容。

是的,它看起来与第一种方式非常相似:使用内置数据结构。但是,它的最大优点是您可以将配置 .py 文件与项目本身分开。因此,当同时利用第一种和第二种方式的优点,并且想要(或需要)将配置 .py 文件与项目代码库分离时,这种方式是正确的。

就我而言,我使用这种方式独立管理配置存储库和 API 服务器存储库。 API服务器只是通过导入该文件来使用配置,但真正的配置值是在其他存储库上管理的。然后,在配置服务器时,我刚刚克隆了两个存储库并使 API 服务器能够动态使用配置。

通过这样做,您可以在利用第一种方式的优点的同时管理配置,还可以最大限度地降低安全风险并更轻松地管理配置。另外,特别是随着配置环境的规模越来越大,独立于项目存储库维护配置将变得更加容易和有效。

结论

到目前为止,我们讨论了 4 种管理配置的方法。事实上,这取决于您的应用程序。当然,你可以混合使用它们,并且可能有比这些更好的方法。而且,当系统规模非常大时,最好使用主要提供配置管理的第三方工具或服务。

我希望这篇文章能够帮助那些遇到配置管理问题的人。

以上就是在 Python 中管理配置的方法的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2191921.html

(0)
上一篇 2025年2月25日 19:16:56
下一篇 2025年2月19日 21:05:40

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • TOML 文件和远程分支管理的实用方法

    本周我有机会处理 toml 配置文件,并通过从项目的分支本地提取更改来审查对我的存储库所做的更改 什么是 toml 文件 toml(tom’s obvious minimal language)是一种配置文件格式,它使用简单的键…

    2025年2月25日
    200
  • 在 GitHub-echo 中实现 TOML 配置支持

    介绍 最近,我有机会通过添加对 TOML 配置文件的支持来增强 github-echo 命令行工具。此功能允许用户在 .github-echo-config.toml 文件中设置持久默认选项,从而减少每次使用该工具时手动输入重复配置的需要。…

    2025年2月25日
    200
  • 异步事件和条件:Python 交通信号的秘密生活

    有没有想过你的 python 协程如何能够在不造成交通拥堵的情况下很好地协同工作?让我们深入了解异步事件和条件的异想天开的世界 – 防止异步代码变成马戏团的无名英雄(除非您愿意)。 活动:大家都在等待的绿灯将 asyncio.e…

    2025年2月25日
    200
  • 用于数据分析的 Python 简介

    在本周与肯尼亚 Lux Tech Academy 举行的一场引人入胜且内容丰富的会议中,我们全面介绍了用于数据和分析的 Python。 首先,您需要安装 Anaconda 下载并启动 Jupyter 笔记本。以下是下载 Anaconda/J…

    2025年2月25日
    200
  • Python 基本介绍

    什么是python? python 将自己描述为一种“解释性、交互式、面向对象的编程语言”,还支持“面向对象编程之外的多种编程范式,例如过程式编程和函数式编程”。 为什么要创建python? python 的诞生是为了将 modula-3 …

    2025年2月25日
    200
  • 使用 WordPress API 的综合指南:身份验证和后期调度

    在本指南中,我们将探索如何使用 wordpress api 进行身份验证并安排特定发布时间的帖子。这些步骤将帮助您以编程方式安全地管理您的 wordpress 内容。 使用 wordpress api 进行身份验证 要安全地与 wordpr…

    2025年2月25日
    200
  • 创建 LLM 以在 Python 中使用张量流进行测试

    嗨, 我想测试一个小型的llm程序,我决定用tensorflow来做。 我的源代码可以在 https://github.com/victordalet/first_llm 一、要求 您需要安装tensorflow和numpy 立即学习“Py…

    2025年2月25日
    200
  • Python 列表理解

    Python 最酷的事情之一是列表推导式如何使在一行代码中创建和操作列表变得非常容易。列表理解是一种通过转换和过滤现有列表中的元素来构建新列表的简洁方法。这个特性是 Python 使代码更具可读性和高效性的众多方法之一,对于初学者来说是一个…

    2025年2月25日
    200
  • Python 作为数据分析工具简介

    当我深入 lux tech academy 的第二周学习时,我们开始接触 python 作为初学者语言。以下概述了 python 作为数据分析工具的介绍。我看过很多数据分析师的视频,大多数都推荐使用python进行数据分析,为什么? pyt…

    2025年2月25日
    200
  • python数据分析简介

    什么是Python? Python 是一种流行的编程语言。它由 Guido van Rossum 创建,并于 1991 年发布。 它用于: 网络开发(服务器端),软件开发,数学,系统脚本。 *Python 能做什么?* Python 可以在…

    2025年2月25日
    200

发表回复

登录后才能评论