Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

435
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda