43 votes

Comment détecter l'environnement d'Heroku ?

J'ai une application Web Django et j'aimerais vérifier si elle s'exécute sur la pile Heroku (pour l'activation conditionnelle du débogage, etc.). Existe-t-il un moyen simple de le faire ? Une variable d'environnement, peut-être ?

Je sais que je peux probablement aussi le faire dans l'autre sens - c'est-à-dire qu'il détecte s'il s'exécute sur une machine de développeur, mais cela ne "sonne pas correctement".

27voto

Neil Middleton Points 12203

Une var ENV semble être le moyen le plus évident de le faire. Recherchez une variable ENV dont vous savez qu'elle existe ou définissez la vôtre :

 on_heroku = False
if 'YOUR_ENV_VAR' in os.environ:
  on_heroku = True

plus sur : http://devcenter.heroku.com/articles/config-vars

16voto

ilovett Points 577

Définissez d'abord la variable d'environnement ON_HEROKU sur heroku :

 $ heroku config:set ON_HEROKU=1

Puis en settings.py

 import os

# define if on heroku environment
ON_HEROKU = 'ON_HEROKU' in os.environ

3voto

Jabba Points 1664

En savoir plus à ce sujet ici : https://devcenter.heroku.com/articles/config-vars

Ma solution :

 $ heroku config:set HEROKU=1

Ces variables d'environnement sont persistantes - elles resteront en place lors des déploiements et des redémarrages d'applications - donc à moins que vous n'ayez besoin de modifier les valeurs, vous n'avez besoin de les définir qu'une seule fois.

Ensuite, vous pouvez tester sa présence dans votre application. :

 >>> 'HEROKU' in os.environ
True

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X