1、將組態寫在Python檔中
#這種方法非常簡單,但它有嚴重的安全性問題,我們都知道不應該把配置寫在程式碼中,如果有人把我們的原始碼上傳到了github中,那麼資料庫的配置就相當於向全世界公開了,當然,當設定檔不包含敏感資訊時,也可以才有這種簡單的方法。
2、利用外部設定檔
讓設定檔和程式碼獨立開來,通常使用 json、yaml或ini的檔案格式來儲存設定。
結合環境變數和python 庫讀取外部文件,首先開發通常不會接觸到生成環境,因此生成環境的配置文件由運維來寫,維運將應用所所需的配置寫好後,放到生產伺服器的指定位置,程式碼從指定位置讀取配置。
為了方便程式的統一偵錯,可以事先約定好一個系統環境變數(XXX_CONFIG_PATH)來指定設定檔的存放路徑。
例如:export XXX_CONFIG_PATH =
/home/test/configs/config.ini 此為設定臨時環境變數
linux、ubuntu 環境變數
查看环境变量: env 设置永久环境变量 1.在/etc/profile 的文件下编辑,所改变的环境变量是面向所有用户的 export CLASSPATH = /../...该路径为绝对路径 2.在当前用户目录下./barsh_profile文件中修改 进行修改的话,仅对当前的用户生效 vim /home/wens/.barshc export CLASSPATH = /../...该路径为绝对路径 最后使用source命令 可以直接使环境变量生效 source/home/wens/.barshc //直接跟环境变量的文件
windows 環境變數
查看环境变量: set 查看某个环境变量: set path 修改环境变量 输入 “set 变量名=变量内容”即可。比如将path设置为“d:nmake.exe”,只要输入set path="d:nmake.exe" 注意:所有的在cmd命令行下对环境变量的修改只对当前窗口有效,不是永久性的修改。也就是说当关闭此cmd命令行窗口后,将不再起作用。 永久性修改环境变量的方法有两种: 一种是直接修改注册表 另一种是通过我的电脑-〉属性-〉高级,来设置系统的环境变量(查看详细) 设置了环境变量后,需要重启 pycharm 生效
3、直接使用系統環境變數讀取組態
此方法不使用檔案來儲存設定訊息,將所有的設定資訊儲存到環境變數中,在實務上比較常見,運維透過ansible 部署腳本,在程式運作前將需要設定的資訊匯入到環境變數中。
不利用文件存儲,在一定程度上加強了對密碼等配置資訊的保護,但也增加了維運的工作量,尤其是當需要修改配置時。
4、微服務架構
在一些微服務架構中,會專門開發配置中心,程式直接從線上讀取配置,配置的管理也會開發一套GUI,方便開發與維運。
5、一般專案中建議的設定方式
-app -__init.py -app.py -settings -__init__.py -base.py -dev.py -prod.py
其中 __init__.py 中,新增判斷邏輯,判斷目前環境使用開發環境還是生產環境,從而載入不同的配置參數。
# settings/__init__.py import os # os.environ.get() 用于获取系统中的环境变量,因为在生产环境中,一般都会把一些关键性的参数写到系统的环境中。 # 所以PROFILE的值其实就是我们配置的环境变量的值。如果没有配这个值,默认走dev的配置。 # PYTHON_PRO_PROFILE = os.environ.get("PYTHON_PRO_PROFILE", "dev") PYTHON_PRO_PROFILE = os.environ.get("PYTHON_PRO_PROFILE") print("是开发环境还是生产环境: ", PYTHON_PRO_PROFILE) if PYTHON_PRO_PROFILE == "dev": from .dev import * elif PYTHON_PRO_PROFILE == "prod": from .prod import * else: raise Exception("Not supported runtime profile {}".format(PYTHON_PRO_PROFILE))
其中 base.py 儲存一些公用的配置,然後在開發環境 dev.py 與生產環境 prod. py 中導入 base.py 的變數。
# settings/base.py import os import time # os.path.abspath: 获取完整路径(包含文件名) current_exec_abspath = os.path.abspath(__file__) current_exec_dir_name, _ = os.path.split(current_exec_abspath) current_up_dir, _ = os.path.split(current_exec_dir_name) current_up2_dir, _ = os.path.split(current_up_dir) print('------log dir=------', current_up2_dir) # 日志文件路径设置 log_path = f"{current_up2_dir}/logs" if not os.path.exists(log_path): os.makedirs(log_path) t = time.strftime("%Y_%m_%d") log_path_file = f"{log_path}/interface_log_{t}.log"
其中 dev.py:
## 导入了base下所有参数 from .base import * database = { "protocol": "mysql+mysqlconnector", "username": "xxxxxx", "password": "hash string", "port": 3306, "database": "repo" }
其中 prod.py:
# 导入了base下所有参数 from .base import * database = { "protocol": "xxxxxxxxxxx", "username": "xxxxxxxxxxx", "password": "xxxxxxxxxxx", "port": 3344, "database": "xxxx" } 对于一些敏感信息可在环境变量里设置,通过如下方法获取,例如: MAIL_SERVER = os.environ.get('MAIL_SERVER', 'smtp.163.com') MAIL_USERNAME = os.environ.get('MAIL_USERNAME') or 'test' MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD') or '12345678'
以上是正確讀取和寫入Python專案中的配置的方法是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于Seaborn的相关问题,包括了数据可视化处理的散点图、折线图、条形图等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于进程池与进程锁的相关问题,包括进程池的创建模块,进程池函数等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于简历筛选的相关问题,包括了定义 ReadDoc 类用以读取 word 文件以及定义 search_word 函数用以筛选的相关内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于数据类型之字符串、数字的相关问题,下面一起来看一下,希望对大家有帮助。

VS Code的确是一款非常热门、有强大用户基础的一款开发工具。本文给大家介绍一下10款高效、好用的插件,能够让原本单薄的VS Code如虎添翼,开发效率顿时提升到一个新的阶段。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于numpy模块的相关问题,Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展,下面一起来看一下,希望对大家有帮助。

pythn的中文意思是巨蟒、蟒蛇。1989年圣诞节期间,Guido van Rossum在家闲的没事干,为了跟朋友庆祝圣诞节,决定发明一种全新的脚本语言。他很喜欢一个肥皂剧叫Monty Python,所以便把这门语言叫做python。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver Mac版
視覺化網頁開發工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),