欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在flask中使用python-dotenv+flask-cli自定義命令(推薦)

 更新時(shí)間:2020年01月05日 15:29:32   作者:Jokky💫  
這篇文章主要介紹了在flask中使用python-dotenv+flask-cli自定義命令的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

最近在重構(gòu) flask 項(xiàng)目的時(shí)候發(fā)現(xiàn)項(xiàng)目的環(huán)境變量異常的混亂,非常不便于管理。而且,更重要的事情是我需要通過(guò)自定義命令來(lái)運(yùn)行 devlopment 和 production 兩種項(xiàng)目環(huán)境。

自定義命令工具——flask-cli

在Flask 1.0+ 中已經(jīng)支持了flask-cli,在翻閱了flask-cli文檔之后,發(fā)現(xiàn)文檔中提供的自定義命令的方法約束還是有點(diǎn)多,而且介紹的也不是特別詳細(xì)。后來(lái),通過(guò)查看flask-cli的源碼發(fā)現(xiàn)flask-cli是基于Click開發(fā)的。

Click is a Python package for creating beautiful command line interfaces in a composable way with as little code as necessary. It's the “Command Line Interface Creation Kit”. It's highly configurable but comes with sensible defaults out of the box.

Click是一個(gè)可以使用簡(jiǎn)潔代碼和組合方法來(lái)創(chuàng)建漂亮的命令行命令的Python包。它還是一個(gè)高度可配置的,具有合理的默認(rèn)設(shè)置的命令行工具創(chuàng)建工具包。

管理環(huán)境變量——python-dotenv

在使用flask-cli的時(shí)候,為了不需要每次都在 flask run 之前都引入環(huán)境變量。官方文檔中提了 python-dotenv ,需要在項(xiàng)目中創(chuàng)建 .env 和 .flaskenv 兩個(gè)文件。

命令行設(shè)置的變量會(huì)重載 .env 中的變量, .env 中的變量會(huì)重載 .flaskenv 中的變量。 .flaskenv 應(yīng)當(dāng)用于公共變量,如 FLASK_APP 而 .env 則應(yīng)用用于私有變量,并且不提交到儲(chǔ)存庫(kù)。

在使用 python-dotenv 之前還需要通過(guò) pip 去安裝依賴包(我這里使用的 pipenv ):

pipenv install python-dotenv

在 .env 文件中一般寫一些私有變量或者是涉及到隱私的變量,即使不上傳到 git 上也不影響程序運(yùn)行的這種。

下面以 .flaskenv 中的幾個(gè)變量為例:

# .flaskenv
FLASK_APP = "app"
FLASK_ENV = "development"
FLASK_RUN_HOST = '0.0.0.0'
FLASK_RUN_PORT = '5000'

讀取環(huán)境變量

這里介紹如何在項(xiàng)目讀取變量的方法:

import os
from dotenv import load_dotenv
# 加載環(huán)境變量文件,dotenv_path默認(rèn)值為.env,override是表示是否可以重載,默認(rèn)值為False
load_dotenv(dotenv_path='.flaskenv',override=True)
# 讀取環(huán)境變量 FLASK_ENV,通過(guò)os.getenv()方法中引入字段名稱來(lái)讀取
env = os.getenv("FLASK_ENV")
print(env)

自定義命令

這里我的項(xiàng)目的入口文件為 app.py

# app.py
import click
import os
from os.path import dirname,join
from dotenv import load_dotenv
# 加載變量文件
load_dotenv(dotenv_path='.flaskenv')

'''
下面這一段代碼是根據(jù)在命令行中傳入的dev的值來(lái)執(zhí)行不同的命令,從而達(dá)到一個(gè)命令區(qū)分開發(fā)環(huán)境和生產(chǎn)環(huán)境
'''
@click.command()
@click.option('--dev', default=os.getenv("FLASK_ENV"),help='environment variable')
def runserver(dev):
 os.system("FLASK_ENV=%s flask run" % (dev))

if __name__ == '__main__':
 runserver()

運(yùn)行代碼:

# 開發(fā)環(huán)境
python app.py
或者
python app.py --dev=development
# 生產(chǎn)環(huán)境
python app.py --dev=production

目前,第一階段就做了這么多,其中還有很多不足之處,希望大家?guī)兔μ岢鳇c(diǎn)意見(jiàn),后續(xù)我有更多的做法,也會(huì)第一時(shí)間更新這些內(nèi)容。

總結(jié)

以上所述是小編給大家介紹的在flask中使用python-dotenv+flask-cli自定義命令,希望對(duì)大家有所幫助!

相關(guān)文章

  • 用Python獲取亞馬遜商品信息

    用Python獲取亞馬遜商品信息

    大家好,本篇文章主要講的是用Python獲取亞馬遜商品信息,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • python基礎(chǔ)面試題整理

    python基礎(chǔ)面試題整理

    這篇文章主要介紹了python基礎(chǔ)面試題整理,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Python實(shí)現(xiàn)檢測(cè)SSL證書是否過(guò)期

    Python實(shí)現(xiàn)檢測(cè)SSL證書是否過(guò)期

    我們知道 SSL 證書是會(huì)過(guò)期的,一旦過(guò)期之后需要重新申請(qǐng),如果沒(méi)有及時(shí)更換證書的話,就有可能導(dǎo)致網(wǎng)站出問(wèn)題,所以本文介紹了如何利用Python實(shí)現(xiàn)檢測(cè)SSL證書是否過(guò)期,需要的可以參考下
    2023-08-08
  • Python+Selenium實(shí)現(xiàn)表單自動(dòng)填充和提交

    Python+Selenium實(shí)現(xiàn)表單自動(dòng)填充和提交

    你是不是也厭倦了每天重復(fù)表單填寫的工作,是時(shí)候讓技術(shù)來(lái)幫助我們解放雙手了,下面小編就為大家介紹一下如何使用Selenium和Python來(lái)自動(dòng)填充和提交表單
    2023-09-09
  • Python使用oslo.vmware管理ESXI虛擬機(jī)的示例參考

    Python使用oslo.vmware管理ESXI虛擬機(jī)的示例參考

    oslo.vmware是OpenStack通用框架中的一部分,主要用于實(shí)現(xiàn)對(duì)虛擬機(jī)的管理任務(wù),借助oslo.vmware模塊我們可以管理Vmware ESXI集群環(huán)境。
    2021-06-06
  • python開啟攝像頭以及深度學(xué)習(xí)實(shí)現(xiàn)目標(biāo)檢測(cè)方法

    python開啟攝像頭以及深度學(xué)習(xí)實(shí)現(xiàn)目標(biāo)檢測(cè)方法

    今天小編就為大家分享一篇python開啟攝像頭以及深度學(xué)習(xí)實(shí)現(xiàn)目標(biāo)檢測(cè)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • python中的插值 scipy-interp的實(shí)現(xiàn)代碼

    python中的插值 scipy-interp的實(shí)現(xiàn)代碼

    這篇文章主要介紹了python中的插值 scipy-interp的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2018-07-07
  • 什么是python的函數(shù)體

    什么是python的函數(shù)體

    在本篇文章里小編給大家分享的是一篇關(guān)于python函數(shù)體的基礎(chǔ)知識(shí)點(diǎn),需要的朋友們可以學(xué)習(xí)下。
    2020-06-06
  • 使用Python玩轉(zhuǎn)串口(基于pySerial問(wèn)題)

    使用Python玩轉(zhuǎn)串口(基于pySerial問(wèn)題)

    這篇文章主要介紹了使用Python玩轉(zhuǎn)串口(基于pySerial問(wèn)題),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • python實(shí)現(xiàn)簡(jiǎn)單銀行管理系統(tǒng)

    python實(shí)現(xiàn)簡(jiǎn)單銀行管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)單銀行管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10

最新評(píng)論