layout | title | tags |
---|---|---|
post |
Facebook 出品:针对复杂应用的配置优雅解决方案框架 |
Python |
之前分享过 Google 开源简洁、优雅的命令行程序生成工具:Fire,可以很方便的把任意的 Python 代码转化为通过命令行执行的程序。但是对于比较复杂的应用参数需要配置,如果都通过命令行参数配置的话,参数会比较多不方便管理。
今天要推荐的是 Facebook 开源的优雅配置框架:hydra,可以通过命令行参数,同时也可以通过配置文件(比如 YAML)配置。
安装方法:pip install --upgrade hydra-core
Python file: my_app.py
,命令行参数配置方式:
import hydra
@hydra.main()
def my_app(cfg):
print(cfg.pretty())
if __name__ == "__main__":
my_app()
使用方法:
$ python my_app.py db.driver=mysql db.user=omry db.pass=secret
db:
driver: mysql
pass: secret
user: omry
Python file: my_app.py
,YAML 配置文件配置:
@hydra.main(config_path='config.yaml')
def my_app(cfg):
print(cfg.pretty())
使用方法:
$ python my_app.py
db:
driver: mysql
pass: secret
user: omry
通过上述 Google 和 Facebook 开源的两个工具,虽然是不同的两种方式来解决应用参数配置的问题,但是都是通过 Python 装饰器的语法来封装整个库,可以看出 Python 中装饰器的重要性,而且看出来了没有,装饰器用好了,可以让使用方很优雅的使用,同时代码也很简洁。如果你会使用 Python,但是都没用过装饰器,甚至一点不懂,赶紧开始学习吧,这个都不懂就出去面试很容易被怼的。