我想使用python3 / flask构建一个非常简单的REST api。
例如,我想将SECRET_KEY
所需的flask
设置为环境变量。
推荐的处理方式是什么?
我知道python-dotenv
软件包允许(或者我应该说需要?).flaskenv
文件,其中将env vars设置为键值对,形式为
SECRET_KEY="my_secret_key"
DB_NAME="mydatabase"
等
然后(我假设)我可以创建一个settings.py
文件,例如
import os
SECRET_KEY = os.getenv('SECRET_KEY`)
然后对我的Flask文件执行import settings
,依此类推。
我的主要问题是,如何在没有这样的.flaskenv
文件但各个变量都可以在容器本身中作为运行时环境变量使用的容器化环境中进行调整(例如通过其协调器)
在没有settings.py
的情况下,以上形式的.flaskenv
是否能够检索环境变量?
答案 0 :(得分:3)
python-dotenv
实际上与Flask无关。可以将您的.env
文件转换为实际的env变量。因此,如果没有它,您将拥有实际的env变量,那么您的os.getenv
应该仍然可以工作。
旁注:您也可以使用os.environ
:
os.environ.get("SECRET")
答案 1 :(得分:0)
在解释器中设置环境变量:
-- Main.purs
module Main where
import Prelude
import Data.Argonaut.Core (Json)
import Data.Argonaut.Decode (decodeJson)
import Data.Argonaut.Parser (jsonParser)
import Data.Either (Either)
import Data.Map (Map)
import Debug.Trace (traceM)
import Effect (Effect)
import Effect.Console (log)
foreign import tuples :: Json
foreign import jsonString :: String
main :: Effect Unit
main = do
let
a = (decodeJson tuples) :: Either String (Map String (Array String))
b = (decodeJson =<< jsonParser jsonString) :: Either String (Map String (Array String))
traceM a
traceM b
traceM $ a == b
使用export SECRET_KEY=123
调用变量:
environ.get()
验证:
from os import environ
from flask import Flask
app = Flask(__name__)
app.config['SECRET_KEY'] = environ.get('SECRET_KEY')