Google App Engine Standard не может найти / выполнить Gunicorn - PullRequest
2 голосов
/ 20 июня 2019

У меня есть проект с бэкэндом Django и угловым фронтэндом. Я развернул их как две службы в Стандарт Google App Engine , и развертывание успешно .

Однако, когда я пытаюсь получить доступ к внутреннему URL this-backend.appspot.com, я получаю

/bin/sh: 1: exec: gunicorn: not found

У меня есть gunicorn в моем файле требований:

gunicorn==19.9.0

Я также определил точку входа:

runtime: python37
service: default

entrypoint: gunicorn -b :$PORT thisapp.wsgi

handlers:
- url: /static
  static_dir: static
- url: /.*
  secure: always
  redirect_http_response_code: 301
  script: auto

Но все равно получите ту же ошибку.

Я рассмотрел все те же проблемы в Stackoverflow, и они были либо из-за требований, либо из-за точки входа, которую я определил для них обоих.

Даже когда я захожу на Stackdriver , я вижу папки с оружейным рогом внутри app engine:/:

gunicorn
gunicorn-19.9.0.dist-info

Это бэкэнд cloudbuild.yaml файл:

steps:

  - name: 'python:3.7'                                                                                                                               
    entrypoint: python3                                                               
    args: ['-m', 'pip', 'install', '-t', '.', '-r', 'requirements.txt'] 

  - name: 'python:3.7'                                                            
    entrypoint: python3                                                           
    args: ['./manage.py', 'collectstatic', '--noinput']

  - name: 'gcr.io/cloud-builders/gcloud'
    args: ['app', 'deploy', '--version=prod']

Я был бы очень признателен, если бы у кого-то были какие-либо решения или рекомендации, поскольку я изучил почти все те же проблемы в Интернете.

Спасибо

Джеймс

1 Ответ

1 голос
/ 21 июня 2019

App Engine по умолчанию ищет файл main.py в корне каталога приложения с WSGI-совместимым объектом, который называется app.

Документ здесь предполагает, что вы можете включить gunicorn в свой файл requirements.txt, если указали точку входа в файле app.yaml, однако версия, которую вы хотите установить, похоже, конфликтует с по умолчанию.

Чтобы обойти это, я бы предложил вам удалить и зависимость от gunicorn в файле needs.txt, и точку входа в ваш app.yaml, и создать файл main.py, например:

from thisapp.wsgi import application

app = application

Таким образом, он вернется к описанному выше поведению по умолчанию и будет работать нормально. Это также реализовано в официальном образце кода .

...