cómo obtener env_vars con nginx UWSGI_SETENV en uwsgi

mi configuración de nginx:

location / {
    include uwsgi_params;
    uwsgi_param UWSGI_PYHOME /usr;
    uwsgi_pass unix:/var/run/uwsgi-python/uwsgi/socket;
    uwsgi_param UWSGI_CHDIR /var/www/my_site;
    uwsgi_param UWSGI_SCRIPT my_site:app;
    uwsgi_param SERVER_NAME my_site;
    uwsgi_param UWSGI_SETENV DEPLOY_VERSION=Development;
}

mi uwsgi para:

/usr/local/bin/uwsgi --master --processes 2 --logdate --chmod-socket=666 --uid www --gid www --limit-as 512 --harakiri 60 --max-requests 1000 --no-orphans —-reload-os-env --daemonize /var/log/uwsgi-python/uwsgi.log --pidfile /var/run/uwsgi-python/uwsgi/pid --socket /var/run/uwsgi-python/uwsgi/socket --xmlconfig /etc/uwsgi-python/apps-enabled/uwsgi.xml

uwsgixml:

<uwsgi>
<master/>
<vhost/>
<memory-report/>
<no-site/>
</uwsgi>

En mi aplicación de petaca

print os.environ.get('DEPLOY_VERSION', 'NONE')  #pring NONE

¿Cómo puedo obtener los env_vars?

Tal vez no pueda obtener la configuración de env_vars por UWSGI_SETENV en ¿modo?

Por cierto: ¿Cómo implementa varias versiones (Desarrollo/Beta/Lanzamiento) de la aplicación en una máquina sin entorno virtual?

preguntado el 01 de julio de 12 a las 01:07

2 Respuestas

En lugar de:

uwsgi_param UWSGI_SETENV DEPLOY_VERSION=Desarrollo;

Puede configurarlo como una variable por solicitud en nginx: uwsgi_param DEPLOY_VERSION 'Development';

Y luego, dentro de Flask, acceda a la variable a través de request.environ: request.environ['DEPLOY_VERSION']

(Tuve un problema similar y me señalaron la solución anterior en la lista de correo de uwsgi)

Respondido 01 ago 12, 13:08

Por supuesto; probablemente no pueden establecer variables de entorno para uwsgi desde nginx; ya que nginx en realidad no inicia uwsgi (uwsgi ya debe estar ejecutándose) y, por lo tanto, no hay realmente una opción para configurarlos. - Eliminación de negación única

Tuve un problema similar al definir las configuraciones del entorno para una implementación de Django Mezzanine CMS.

Como DEPLOY_VERSION parece apuntar a la aplicación subyacente y no al servicio uWSGI, creo que el lugar correcto para colocarlo es el archivo de configuración de uWSGI en lugar del de Nginx.

Intente cambiar el archivo .xml a:

<uwsgi>
<master/>
<vhost/>
<memory-report/>
<env>DEPLOY_VERSION=Development</env> <!-- this -->
<no-site/>
</uwsgi>

Respondido 14 Jul 13, 15:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.