成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

優雅地加載Yaml配置文件

開發 開發工具
今天我們來介紹一個先進的工具,專門用來高效加載配置文件。這就是Facebook開源的Hydra。

我在多篇文章里面都說過,我非常喜歡使用Yaml格式來寫配置文件,Yaml是一個對人非常友好的配置格式。

有時候,我們在開發環境、測試環境和線上環境會有多套不同的配置文件,如何在不修改代碼的情況下方便的切換配置文件呢?我以前的文章講過一種方法,使用環境變量來指定配置文件名。今天我們來介紹一個更先進的工具,專門用來高效加載配置文件。這就是Facebook開源的Hydra。

這個工具有多簡單呢?我們先寫兩個配置文件,然后看看怎么讀取它:

使用pip安裝Hydra:

python3 -m pip install hydra-core

接下來,我們寫一段代碼,來讀取配置文件:

import os
import hydra
from omegaconf import DictConfig

env = os.getenv('DATA_CENTER', 'dev')
@hydra.main(config_path="config", config_name=env)
def main(cfg: DictConfig):
print('MongoDB鏈接地址是:', cfg.mongo.uri)
print('Redis的key是:', cfg.redis.key)
print('黑名單是:', cfg.detail.black_list)


if __name__ == '__main__':
main()

運行效果如下圖所示:

其中,裝飾器hydra.main的參數config_path指定存放配置文件的文件夾,config_name用來指定配置文件的名字(去掉.yaml)。

這樣一來,我們可以通過環境變量指定要使用哪個配置文件。

這樣看起來似乎跟我以前講的方法沒什么區別啊。那么,高級的功能來了。例如現在我使用dev環境時,臨時想修改一下Redis的Key怎么辦呢?以前的方法,我就必須去修改Yaml文件,把Key改掉。但是,既然是臨時修改,測試完了又要改回來,顯然非常麻煩。

使用Hydra,這個問題就不再是問題了。我們來看看直接在命令中覆蓋數據的方法:

請看圖中,我代碼沒有做任何修改,Yaml也沒有做任何修改。只需要在啟動命令的時候增加一個參數redis.key=new_key,那么程序讀取到的就是新的值了。這對臨時測試的時候非常有用。

除了我上面介紹的這些,Hydra還可以實現自動補全,自動提示參數名,自動以多個不同的配置連續運行等等功能。

最后,我補充一個點。有同學在公眾號粉絲群提問,Hydra為什么不能在調用函數的時候,傳遞額外的參數,例如下面這樣寫就會報錯:

這是因為,Hydra的裝飾對象應該是程序的入口函數。給入口函數傳遞參數是很奇怪的。如果你的入口函數要根據參數的不同值執行不同的邏輯,那么這個參數你完全可以放到配置文件中。而不是用函數參數來傳入。

所以,這里報錯應該是功能而不是bug。本來就不應該在入口函數中添加額外的參數。

責任編輯:趙寧寧 來源: 未聞Code
相關推薦

2021-03-24 10:20:50

Fonts前端代碼

2009-09-25 10:49:25

Hibernate加載

2025-03-28 08:34:34

2010-02-02 18:19:52

Linux mplay

2023-11-01 08:30:20

SpringYAML

2024-04-23 14:13:38

開發配置文件

2020-02-24 11:12:01

Linux電腦數據

2020-04-03 13:45:16

刪除Linux垃圾文件

2011-01-19 14:00:21

2024-11-13 16:37:00

Java線程池

2011-01-13 16:27:26

Linux配置文件

2010-12-27 14:59:31

Outlook 配置文

2010-12-28 16:35:32

Outlook 配置文

2022-03-23 07:31:34

SpringBoot加載配置

2020-02-13 09:51:13

修復Windows 10配置文件

2009-07-09 15:55:18

WebWork配置文件

2011-03-28 09:07:26

Nagios配置文件

2011-04-01 16:30:49

Nagios

2011-03-28 15:52:16

Nagios配置文件

2011-03-03 09:14:38

PureFTPd
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品五区 | 日韩久久久久久久 | 奇米视频777 | 欧美一区二区三区视频 | 亚洲精品高清视频 | 国产农村一级国产农村 | 夜夜草 | 国产日韩欧美一区 | av手机在线免费观看 | 日韩在线观看一区 | 在线成人免费视频 | 亚洲激情一级片 | 亚洲欧洲在线视频 | 欧美区日韩区 | 免费成人高清 | 成人免费淫片aa视频免费 | 怡红院怡春院一级毛片 | 国产精品久久久久一区二区三区 | 精品视频一区在线 | 亚洲视频欧美视频 | 精品成人av| 天堂视频一区 | 波多野结衣一区二区 | 日韩福利 | 日本a∨视频 | 久久99精品久久久久久 | 欧美亚洲激情 | 天天插天天射天天干 | 午夜小电影 | 亚洲精品久久久一区二区三区 | av看片网站 | 国产欧美日韩久久久 | 日韩一区二区三区在线观看视频 | 国产视频中文字幕 | 97视频在线看| 97在线观看 | 狠狠做深爱婷婷综合一区 | 亚洲午夜精品久久久久久app | 99精品欧美一区二区三区综合在线 | 欧美日韩亚洲国产 | 国产成人自拍av |