2011-03-25 4 views
0

Je voudrais accéder à la variable d'environnement GEOIP_COUNTRY_CODE à partir de Django s'exécutant sur mod_wsgi en mode démon. Le problème est que je peux voir la variable depuis les scripts PHP qui s'exécutent sur le serveur mais il semble qu'elle ne soit pas passée par WSGI sur mon site Django. request.META.get('GEOIP_COUNTRY_CODE') ne fonctionne pas. Existe-t-il quelque chose comme WSGIPassAuthorization pour des variables d'environnement supplémentaires dans mod_wsgi?Obtenir mod_geoip pour fonctionner avec mod_wsgi dans Apache 2.2.17

+0

Où êtes-vous définissez GEOIP_COUNTRY_CODE en premier lieu? On ne peut pas répondre à la question sans savoir où et comment elle est définie. –

+0

AFAICT est défini par mod_geoip dans Apache2. – Fladi

Répondre

1

Si la variable est définie par le module d'extension comme une variable d'environnement, alors il sera accessible:

import os 
value = os.environ['GEOIP_COUNTRY_CODE'] 

Ie, comme toute autre variable d'environnement..


MISE À JOUR 1:

Si placé à l'intérieur d'un module Apache mais tel que mod_geoip, la seule façon qu'il serait transféré dans domaine d'application WSGI est si elle est définie dans req.subprocess_env de la structure de la demande Apache . C'est à dire, comme si la directive SetEnv avait été utilisée avec Apache. Dans ce cas, il devrait apparaître dans le dictionnaire WSGI environ transmis à l'application WSGI.

Pour essayer de valider si ce phénomène se produit, en utilisant WSGI script de test d'écho représenté dans:

http://code.google.com/p/modwsgi/wiki/DebuggingTechniques#Displaying_Request_Environment

+0

J'ai essayé cela aussi, mais 'GEOIP_COUNTRY_CODE' n'est pas inclus dans le dict os.environ. – Fladi

+0

Il semble qu'à partir de Django 1.3 l'environnement WSGi est fusionné dans request.META, alors maintenant je peux facilement appeler request.META.get ('GEOIP_COUNTRY_CODE') pour obtenir la valeur que je veux. – Fladi

+0

Je doute que la fusion ne soit que de Django 1.3. Vous avez toujours pu accéder au dictionnaire WSGI environ via l'objet de requête Django et je doute beaucoup qu'ils aient changé comment cela se fait car cela aurait brisé tant de choses qui utilisent ce qui aurait été la façon de faire existante . –

Questions connexes