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"
  • 相关阅读:
    黄金点游戏(结对项目)
    WORD COUNT
    企业级应用与互联网应用的区别
    问题
    软件工程期末学习总结
    自我介绍
    四则运算程序
    个人自评
    contenttype
    ubuntusaltstack
  • 原文地址:https://www.cnblogs.com/liubiao/p/7504765.html
Copyright © 2011-2022 走看看