2011-01-24 10 views
5

Duplicar posible:
In Python, how can I test if I'm in Google App Engine SDK?¿Cómo puede saber mi código si se está ejecutando en el servidor de Google o en mi servidor de desarrollo local?

¿Hay una bandera entorno que le dirá si mi código se ejecuta en la producción o en el servidor de desarrollo?

Me gustaría poder utilizar una instrucción if para hacer algo diferente según este indicador.

(Caso específico:. Saltos de línea en un archivo de texto que quiero leer son tratados de manera diferente en los dos ambientes)

Respuesta

17
if os.environ.get('SERVER_SOFTWARE','').startswith('Development'): 
    DEBUG = True 
    logging.debug("[*] Debug info activated") 
+2

** eso es una manera de ir ** - lástima Google no proporciona una funncion simple como que uno :(Justo cuida SERVER_SOFTWARE en google_appengine SDK y encontrarás ~ 8 llamadas haciendo esa prueba – lukmdo

1

Para Google App Engine, ya que me han dicho que no se puede importar socket probablemente podría usar ese hecho para determinar si se está ejecutando en GAE. Esta solución no es 100% infalible, pero debería hacer lo que quiera. Pon esto en settings.py

try: 
    import socket 
except ImportError: 
    DEBUG = TRUE 

Para cualquiera que use Django pero no GAE, puede usar esto en su lugar. Cambie 'devserver' a cualquiera que sea el nombre de host de su servidor de desarrollo.

import socket 
if socket.gethostname() == 'devserver': 
    DEBUG = TRUE 

A continuación, siempre que se necesite para comprobar la variable de depuración en el código

from django.conf import settings 

if settings.DEBUG: 
    newline = '\n' 
+0

¿Por qué los downvotes? – jonescb

+0

No creo que el motor de la aplicación te permita importar el socket. Puede que quieras editar tu publicación para que la información incorrecta no se difunda . (Te subí de categoría porque no creo que la gente deba menospreciar y no dar una razón.) – mcotton

+0

¡Oh, gracias! No uso GAE, b pero esto funciona para Django simple. No me di cuenta de lo limitado que era GAE. – jonescb

Cuestiones relacionadas