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

一日一技:如何正確管理項目的環(huán)境變量

開發(fā) 項目管理
項目的配置信息,除了用配置文件以外,還可以使用環(huán)境變量來進行設置。有一些項目,他們不用配置文件設置敏感信息,因為害怕一不小心就把敏感信息發(fā)送到了Github上面。而是把所有敏感信息設置到環(huán)境變量里面。代碼直接從環(huán)境變量讀取這些信息。

[[423936]]

在之前的公眾號文章:開發(fā)經(jīng)驗:如何正確設置開發(fā)環(huán)境與生產(chǎn)環(huán)境的配置參數(shù)中,我提到了把項目的開發(fā)環(huán)境與生產(chǎn)環(huán)境的配置文件分開管理這種方式。

實際上,項目的配置信息,除了用配置文件以外,還可以使用環(huán)境變量來進行設置。有一些項目,他們不用配置文件設置敏感信息,因為害怕一不小心就把敏感信息發(fā)送到了Github上面。而是把所有敏感信息設置到環(huán)境變量里面。代碼直接從環(huán)境變量讀取這些信息。

在Python里面,讀取環(huán)境變量非常簡單:

  1. import os 
  2.  
  3. value = os.getenv('變量名'

假設有一個項目,它運行的時候需要連Redis/MongoDB/Kafka/ElasticSearch。配置信息有五六十條。那么,它可能需要設置很多的環(huán)境變量,像下面這樣:

  1. export REDIS_HOST=xxx 
  2. export REDIS_PORT=xxx 
  3. export REDIS_PASSWORD=xxx 
  4. export MONGODB_URI=xxxx 
  5. export KAFKA_SERVER=xxx 
  6. ... 

這樣做的好處顯而易見,一旦設置好環(huán)境變量以后,每次啟動程序只需要直接運行代碼就可以了。當你在開發(fā)機上面運行,它自動就連開發(fā)環(huán)境;當你在生產(chǎn)環(huán)境來運行,它自動就會連生產(chǎn)環(huán)境。

但壞處也很明顯,如果你有多個環(huán)境,每次重新修改環(huán)境變量就非常麻煩。一般來說,生產(chǎn)環(huán)境只有一個,但你還有開發(fā)環(huán)境、測試環(huán)境、預發(fā)布環(huán)境…。其中生產(chǎn)環(huán)境的配置參數(shù)你是拿不到的,但另外幾個環(huán)境的參數(shù)你是可以拿到的。假設你現(xiàn)在的代碼在開發(fā)機運行正常,但是放到測試環(huán)境就失敗了。那么你想在開發(fā)機使用測試環(huán)境的參數(shù)來調(diào)試代碼。這個時候你就必須一個一個重新設置環(huán)境變量,這就非常麻煩。

但好在Python已經(jīng)有一個用來管理項目環(huán)境變量的第三方庫python-dotenv[1]。

這個庫使用起來非常簡單,只需要兩行代碼加一個文件。

首先,在項目的根目錄創(chuàng)建一個文件,叫做.env。使用Windows的同學可能無法做到,因為Windows使用正常方法沒有辦法創(chuàng)建一個點開頭的文件。但是Linux和macOS可以正常創(chuàng)建。例如:

  1. NAME=kingname 
  2. SALARY=9999999 
  3. ADDRESS=上海 

然后,在項目入口文件的頂部,增加兩行代碼,如下圖所示:

  1. from dotenv import load_dotenv 
  2. load_dotenv() 

這樣就完成了。你原來讀取環(huán)境變量的代碼不需要做任何修改,直接讀取環(huán)境變量就可以了,如下圖所示:

從圖中可以看到,當我們在Shell里面直接執(zhí)行echo $ 變量名的時候,顯示的是空,說明這個環(huán)境變量是沒有設置的。當我們運行項目代碼的時候,python-dotenv會自動讀取.env文件,然后在項目里面設置環(huán)境變量。

如果僅僅是讀文件,那我當然不會特意介紹它。它還有兩個更好用的功能。

如果環(huán)境變量已經(jīng)存在,那么會以已經(jīng)存在的環(huán)境變量為準,.env中對應的項自動失效:

也就是說,這個.env文件,你甚至可以直接上傳到生產(chǎn)環(huán)境。由于生產(chǎn)環(huán)境已經(jīng)設置好了對應的配置參數(shù),所以.env文件里面的內(nèi)容自動失效。

第二個好用的功能,是.env里面還可以復用同一個變量。例如,我的項目有一個域名會在多個地方用到:

  1. EMAIL=contact@kingname.info 
  2. ENTRYPOINT=https://kingname.info/api 
  3. REDIS_HOST=redis.kingname.info 
  4. KAFKA_SERVER=kafka.kingname.info 
  5. ... 

如果有一天我要修改這個域名,那么所有配置都需要修改。但是.env可以復用變量:

  1. DOMAIN=kingname.info 
  2. EMAIL=contact@${DOMAIN} 
  3. ENTRYPOINT=https://${DOMAIN}/api 
  4. REDIS_HOST=redis.${DOMAIN} 
  5. KAFKA_SERVER=kafka.${DOMAIN} 

這樣一來,當我要改域名的時候,只需要修改DOMAIN的值就可以了。

關于python-dotenv的更多使用說明,大家可以閱讀參考文檔里面的Readme。

參考文獻

[1]python-dotenv: https://github.com/theskumar/python-dotenv

 

責任編輯:武曉燕 來源: 未聞Code
相關推薦

2024-07-30 08:16:18

Python代碼工具

2021-06-08 21:36:24

PyCharm爬蟲Scrapy

2021-04-12 21:19:01

PythonMakefile項目

2021-10-15 21:08:31

PandasExcel對象

2025-05-28 03:15:00

Scrapy數(shù)據(jù)sleep

2020-12-04 06:39:25

爬蟲網(wǎng)頁

2022-06-28 09:31:44

LinuxmacOS系統(tǒng)

2023-10-28 12:14:35

爬蟲JavaScriptObject

2022-03-12 20:38:14

網(wǎng)頁Python測試

2024-07-30 08:11:16

2024-01-29 00:45:36

跨域后端接口

2022-08-26 09:34:19

單元測試代碼項目

2024-11-11 00:38:13

Mypy靜態(tài)類型

2021-05-08 19:33:51

移除字符零寬

2021-04-27 22:15:02

Selenium瀏覽器爬蟲

2020-12-11 06:30:00

工具分組DataFrame

2024-05-29 00:00:01

字符串Python縮進

2022-03-07 09:14:04

Selenium鼠標元素

2020-05-19 13:55:38

Python加密密碼

2024-02-20 22:13:48

Python項目Java
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品一区在线观看 | 免费成人高清在线视频 | 午夜视频在线观看网址 | 激情综合五月 | 免费一级黄 | 特级生活片 | 精品一区二区三区在线观看 | 亚洲成人一区 | 色综合久久天天综合网 | 婷婷精品 | 一区二区三区影院 | 亚洲福利在线观看 | 欧美不卡网站 | 午夜午夜精品一区二区三区文 | 日韩一区不卡 | 亚洲精品乱码久久久久久蜜桃91 | 亚洲+变态+欧美+另类+精品 | 国产精品网址 | 日本精品视频在线观看 | 亚洲精品一区二三区不卡 | 欧美偷偷操 | 99国产精品一区二区三区 | 国产精品久久 | 亚洲欧洲在线看 | 亚洲国产精品视频 | 久久久精品一区二区三区 | 国产福利在线播放 | 欧美色综合一区二区三区 | 久久午夜精品福利一区二区 | 国产精品theporn| 日韩成人免费 | 久久久看 | 亚洲区一区二区 | 欧美成人精品激情在线观看 | 毛片a级毛片免费播放100 | 午夜精品一区二区三区在线视频 | 欧美日韩不卡 | 国产观看 | 在线一区二区三区 | 久久久.com| 国产精品国产三级国产aⅴ中文 |