亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Django 項目通過加載不同env文件來區分不同環境

發布時間:2020-10-01 03:17:26 來源:腳本之家 閱讀:255 作者:studytime 欄目:開發技術

簡述

本文主要是整理如何在 django 項目中解決不同環境下加載不同 .env 環境配置文件的方案。主要內容包含 django-environ 的安裝使用,以及 django-crontab 腳本環境下的配置使用。

django-environ 的使用

安裝

官方 django-environ github鏈接地址

pip install django-environ

使用

創建 .env文件

# 項目目錄中
touch .env

# 增加環境變量
DEBUG=True
SECRET_KEY=your-secret-key
DATABASE_URL=psql://urser:un-githubbedpassword@127.0.0.1:8458/database
SQLITE_URL=sqlite:///my-local-sqlite.db
CACHE_URL=memcache://127.0.0.1:11211,127.0.0.1:11212,127.0.0.1:11213
REDIS_URL=rediscache://127.0.0.1:6379/1?client_class=django_redis.client.DefaultClient&password=ungithubbed-secret

與 settings.py 一起使用。為了方便使用目前使用gitlab為內網環境,故而 .env 不需要加入 .gitignore ,實現文件忽略上傳。

import environ

# initialize env
env = environ.Env(
 # set casting, default value
 DEBUG=(bool, False)
)
# reading .env file
environ.Env.read_env()

# False if not in os.environ
DEBUG = env('DEBUG')

# Raises django's ImproperlyConfigured exception if SECRET_KEY not in os.environ
SECRET_KEY = env('SECRET_KEY')

# Parse database connection url strings like psql://user:pass@127.0.0.1:8458/db
DATABASES = {
 # read os.environ['DATABASE_URL'] and raises ImproperlyConfigured exception if not found
 'default': env.db(),
 # read os.environ['SQLITE_URL']
 'extra': env.db('SQLITE_URL', default='sqlite:////tmp/my-tmp-sqlite.db')
}

CACHES = {
 # read os.environ['CACHE_URL'] and raises ImproperlyConfigured exception if not found
 'default': env.cache(),
 # read os.environ['REDIS_URL']
 'redis': env.cache('REDIS_URL')
}

如何實現不同環境下加載不同環境變量

在只使用一個 settings.py 文件情況下,可以只使用一個環境變量,通過此環境變量來讀取不同環境的 .env 文件以區分不同環境。 這個環境變量就沒法寫在 .env 文件了,必須手動指定。假設我們這個環境變量叫PROJECT_ENV。那么我們在命令行執行任何命令的時候,在前面加上PROJECT_ENV=xxx來指定環境變量。 當然,也可以export來指定這個環境變量,也可以修改shell配置文件來指定這個環境變量,甚至supervisord和uwsgi的配置文件也可以指定環境變量。

執行方法

PROJECT_ENV=local python manage.py runserver

多環境.env文件設置

假設目前存在 local 以及 product 兩種環境,則在 envs 下新建 .env.local 以及 .env.product 文件。

settings.py 代碼兼容

import os
import environ
import logging.config

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

env = environ.Env(
 # set casting, default value
 DEBUG=(bool, False)
)

"""
通過指定環境遍歷加載不同env文件
PROJECT_ENV=production python manage.py crontab add
默認場景下可不指定,則加載local文件
"""
env_name = env.str('PROJECT_ENV', 'local')
# reading .env file
env.read_env('envs/.env.%s' % env_name)

如何在 django-crontab 腳本環境下加載不同配置

django-crontab 的使用可以參考django-crontab實現服務端的定時任務

代碼調整

在 settings.py 文件中,django-crontab 配置任務 CRONJOBS 下增加 CRONTAB_COMMAND_PREFIX =

'PROJECT_ENV=' + env_name 參數指定

CRONJOBS = [
 ("*/5 * * * *", "analysis.cron.test_cron", ">>" + LOG_DIR + "log/fba_claim_shipment.log"),
]

CRONTAB_COMMAND_PREFIX = 'PROJECT_ENV=' + env_name

執行方法

PROJECT_ENV=local python manage.py crontab add

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永宁县| 体育| 蚌埠市| 临沭县| 阳东县| 余江县| 武强县| 绍兴县| 桦南县| 乾安县| 共和县| 文成县| 高清| 河北区| 洞口县| 温泉县| 来安县| 湘阴县| 广安市| 道孚县| 碌曲县| 民勤县| 科技| 察隅县| 牟定县| 溆浦县| 永川市| 永定县| 嘉荫县| 保定市| 万源市| 禹城市| 西安市| 渭源县| 庆元县| 若尔盖县| 类乌齐县| 定日县| 丰城市| 方山县| 石屏县|