Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

434
Vistas
Google Cloud Django si os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine'): no funciona

Estoy trabajando en un proyecto Django de Google Cloud.

Estoy tratando de verificar en settings.py si estoy ejecutando en modo Desarrollo o Producción.

Agregué el siguiente bloque de código para probar si el SOFTWARE donde se ejecuta el programa está en mi máquina o en los servidores de Google Cloud.

 # | settings.py | if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine'): #code to execute in production else: #code to execute in development

Me di cuenta de que la declaración if siempre es falsa , así que decidí depurar el os.environ . El resultado de la depuración es que el valor de la clave SERVER_SOFTWARE del entorno es igual a gunicorn/20.1.0 .

Como está escrito en la respuesta correcta de esta pregunta de stackoverflow , cuando se ejecuta en producción (es decir, en Google Cloud Severs App Engine), el valor de SERVER_SOFTWARE debe ser Google App Engine/XYZ , donde X, Y y Z representan la versión de Google Cloud. Pero, como dije, mi valor, cuando se ejecuta en App Engine, no es así, es gunicorn/20.1.0 .

Entonces, ¿cómo hago para que el programa sepa si estoy en desarrollo o en producción?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Desafortunadamente, la respuesta de desbordamiento de pila (SO) a la que se vinculó tiene casi doce años y se refiere a Python 2 (obsoleto). No pude encontrar el entorno predeterminado SYSTEM_SOFTWARE . variedad tanto para Google Cloud Platform (GCP) App Engine Standard ( aquí ) como para el entorno flexible ( aquí ).

Es seguro decir que el env. variedad que App Engine inyecta en cada instancia estándar de forma predeterminada puede cambiar. En cambio, ¿por qué no proporciona un env. variedad en su entorno estándar de App Engine. archivo de configuración ( app.yaml ) para asegurarse de que su aplicación Django se esté ejecutando en "producción" solo cuando usted lo desee:

  1. Agrega la sección env_variables a app.yaml , como:

     . . . env_variables: DJANGO_PRODUCTION_ENVIRONMENT: true . . .

    o:

     . . . env_variables: DJANGO_SYSTEM_SOFTWARE: "production" . . .

    Puedes buscar más env estándar de App Engine. configuración ajustes aquí .

  2. Implemente su aplicación Django en el entorno estándar de App Engine. con el SDK de GCP Cloud ( gcloud ):

     gcloud app deploy --appyaml=./app.yaml

Confirme que las versiones anteriores (p. ej., $AES_OLD_VERSION ) se han detenido con:

 gcloud app versions list \ --format="table[box=true](version.id:label=ID, version.servingStatus:label=STATUS)" \ --service=$AES_SERVICE_ID ┌──────────────────┬─────────┐ │ ID │ STATUS │ ├──────────────────┼─────────┤ │ . . . │ . . . │ │ $AES_OLD_VERSION │ STOPPED │ │ $AES_VERSION_ID │ SERVING │ └──────────────────┴─────────┘

Confirme que su env. variedad lo han convertido en $AES_VERSION_ID con:

 gcloud app versions describe $AES_VERSION_ID \ --format="yaml(envVariables)" \ --service=$AES_SERVICE_ID #=> envVariables: DJANGO_PRODUCTION_ENVIRONMENT: 'True' DJANGO_SYSTEM_SOFTWARE: production
over 4 years ago · Santiago Trujillo Denunciar

0

Voy a presentar un par de otras soluciones.

(1) GAE proporcionó env vars

GAE establece automáticamente las variables de entorno que probablemente no establezca cuando se ejecuta localmente. Yo uso esto:

 version = os.environ.get('GAE_VERSION', 'local')

Obtendrá la versión real en producción y 'local' en su máquina.

(2) Verifique la URL de la solicitud

Esto es Flask pero debe haber algo similar en Django:

 request.url_root == 'http://localhost:8080/'
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda