zoukankan      html  css  js  c++  java
  • 使用Supervisor管理uWSGI进程的Django应用程序无法读取环境变量问题解决

    项目中通过配置环境变量区分生产、开发、测试环境,代码如下:

    WSGI_ENV = os.environ.get("DJANGO_CONF_MODULE", "")
    RUN_MODE = 'DEVELOP'
    if WSGI_ENV.endswith("production"):
        RUN_MODE = "PRODUCT"
        DEBUG = False
    elif WSGI_ENV.endswith("testing"):
        RUN_MODE = "TEST"
        DEBUG = False
    else:
        RUN_MODE = "DEVELOP"
        DEBUG = True
    

    项目部署在服务器上后,发现配置的环境变量没起作用,这就奇了怪了,一时半会还真没找到原因,只能通过在配置文件里写死环境配置了。

    今天一时兴起,又想来揪出这问题,无意中发现在手动启动uwsgi进程时,程序是能读取到配置系统的环境变量,使用Supervisor管理的uwsgi进程无法读取到,好了,问题就此揪出了。

    解决方案:
    Supervisor在program的配置文件中有environment配置,项目中的环境变量需要配置在此。

    [program:xxx]
    
    command=/usr/local/bin/uwsgi --ini /project/xxx/uwsgi.ini
    directory=/project/xxx
    
    user=root
    numprocs=1
    
    stdout_logfile=/var/log/django/xxx.log
    stderr_logfile=/var/log/django/xxx.log
    autostart=true
    autorestart=true
    startsecs=10
    priority=997
    environment=DJANGO_CONF_MODULE="production"
  • 相关阅读:
    攻击方法
    Paillier 同态加密方案
    $EL Gamal$ 密码方案的椭圆曲线形式
    【hbase】hbase的基本使用
    【linux】创建用户,查看用户
    【linux】删除命令
    【linux】上传文件也可以直接拖动文件到xshell中
    【linux】安装pip时报错
    【Linux】界面快捷键
    【linux】Ubuntu无法下载mysql
  • 原文地址:https://www.cnblogs.com/liubiao/p/7504765.html
Copyright © 2011-2022 走看看