Django 多环境配置详解


Posted in Python onMay 14, 2019

本文也是开发项目中的一个小经验Tip,虽然很简单,但对很多朋友也有小帮助。

我们实际工程中,可能遇到开发环境、预上线环境、线上环境等环境场景,应用配置因此可能有所不同。

我的经验是利用环境变量来定义应用运行环境,并在代码中做对应的判定。

具体来说,我在settings.py中增加了一些判定代码,大概如下:

APP_ENV = os.getenv('APP_ENV')
if APP_ENV == 'prod':
  from ._settings.prod_settings import *
elif APP_ENV == 'test':
  from ._settings.test_settings import *
else:
  from ._settings.dev_settings import *

首先取环境变量APP_ENV,根据APP_ENV不通加载_settings包中的不同配置文件。

比如,prod_settings.py中关闭了DEBUG:

# -*- coding: utf-8 -*-
 
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False

而在test_settings.py中开启了DEBUG:

# -*- coding: utf-8 -*-
 
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

在启动wsgi容器的时候,我们可以指定APP_ENV环境变量。

比如,利用manage.py做开发的时候:

ZDEVOPS_ENV=test python manage.py runserver

再比如,用systemctl做生产部署的时候:

# 环境变量
Environment='APP_ENV=prod'
# 进程工作目录
WorkingDirectory=/www/python/myapp
# 执行命令
ExecStart=/usr/bin/gunicorn apps.wsgi:application -w 4 -b 127.0.0.1:8000

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Mac下Supervisor进程监控管理工具的安装与配置
Dec 16 Python
详解Python程序与服务器连接的WSGI接口
Apr 29 Python
python实现的二叉树定义与遍历算法实例
Jun 30 Python
Python爬虫设置代理IP的方法(爬虫技巧)
Mar 04 Python
使用python的pexpect模块,实现远程免密登录的示例
Feb 14 Python
python 定时器,实现每天凌晨3点执行的方法
Feb 20 Python
在pytorch中查看可训练参数的例子
Aug 18 Python
Python3如何对urllib和urllib2进行重构
Nov 25 Python
Python面向对象之多态原理与用法案例分析
Dec 30 Python
python爬虫开发之selenium模块详细使用方法与实例全解
Mar 09 Python
python 实现简易的记事本
Nov 30 Python
Python爬虫网络请求之代理服务器和动态Cookies
Apr 12 Python
python仿evething的文件搜索器实例代码
May 13 #Python
python爬虫租房信息在地图上显示的方法
May 13 #Python
详解如何设置Python环境变量?
May 13 #Python
详解python运行三种方式
May 13 #Python
OpenCV图像颜色反转算法详解
May 13 #Python
搞清楚 Python traceback的具体使用方法
May 13 #Python
Python3+OpenCV2实现图像的几何变换(平移、镜像、缩放、旋转、仿射)
May 13 #Python
You might like
BBS(php & mysql)完整版(七)
2006/10/09 PHP
PHP验证码类代码( 最新修改,完全定制化! )
2010/12/02 PHP
php设置静态内容缓存时间的方法
2014/12/01 PHP
服务器上配置PHP运行环境教程
2015/02/12 PHP
xml分页+ajax请求数据源+dom取结果实例代码
2008/10/31 Javascript
from表单多个按钮提交用onclick跳转不同action
2014/04/24 Javascript
详解jQuery中的元素的属性和相关操作
2015/08/14 Javascript
Bootstrap+jfinal退出系统弹出确认框的实现方法
2016/05/30 Javascript
js微信扫描二维码登录网站技术原理
2016/12/01 Javascript
利用Mongoose让JSON数据直接插入或更新到MongoDB
2017/05/03 Javascript
Angular排序实例详解
2017/06/28 Javascript
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
2017/12/05 Javascript
vue轮播图插件vue-concise-slider的使用
2018/03/13 Javascript
如何从零开始利用js手写一个Promise库详解
2018/04/19 Javascript
JavaScript实现一个带AI的井字棋游戏源码
2018/05/21 Javascript
微信小程序踩坑记录之解决tabBar.list[3].selectedIconPath大小超过40kb
2018/07/04 Javascript
extjs图形绘制之饼图实现方法分析
2020/03/06 Javascript
12步入门Python中的decorator装饰器使用方法
2016/06/20 Python
python中利用h5py模块读取h5文件中的主键方法
2018/06/05 Python
Python实现的json文件读取及中文乱码显示问题解决方法
2018/08/06 Python
Python中应该使用%还是format来格式化字符串
2018/09/25 Python
Python中生成一个指定长度的随机字符串实现示例
2019/11/06 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
2020/01/17 Python
Python安装依赖(包)模块方法详解
2020/02/14 Python
浅谈pytorch池化maxpool2D注意事项
2020/02/18 Python
Python实现迪杰斯特拉算法并生成最短路径的示例代码
2020/12/01 Python
HTML5中使用postMessage实现Ajax跨域请求的方法
2016/04/19 HTML / CSS
英国最大的独立玩具专卖店:The Entertainer
2019/09/06 全球购物
2014年教师党员自我评价范文
2014/09/22 职场文书
群众路线教育实践活动学习笔记内容
2014/11/06 职场文书
英文版辞职信
2015/02/28 职场文书
党委工作总结2015
2015/04/27 职场文书
2019年励志签名:致拼搏路上的自己
2019/10/11 职场文书
Pygame如何使用精灵和碰撞检测
2021/11/17 Python
vue代码分块和懒加载非必要资源文件
2022/04/11 Vue.js
Android 中的类文件和类加载器详情
2022/06/05 Java/Android