/ bin / sh: 1: exec: gunicorn: не найдено

Dec 16 2020

Я пытаюсь развернуть простое приложение django на движке облачных приложений Google. Приложение имеет базовые серверы wsgi и asgi, где wsgi обслуживает запросы HTTPS, а asgi обслуживает запросы веб-сокетов. Я следую руководству по движку Google App Engine, чтобы развернуть приложение, и оно было успешно построено и развернуто. Однако не удается найти установленные пакеты в развернутой рабочей области.

Это шаги, которым я следую

gcloud init
virtualenv myenv
source activate myenv/bin/activate
pip install -r requirements.txt
gcloud app deploy

В файле requirements.txt есть gunicorn и daphne, и они также устанавливаются.

Это ошибка, которую я получаю, когда открываю развернутое приложение в браузере.

2020-12-15 20:48:25 my-service[20201216t014451]  /bin/sh: 1: exec: gunicorn: not found

Так выглядит мой файл app.yaml

runtime: python38
service: my-service
instance_class: F2

entrypoint: gunicorn -b :$PORT main:app
handlers:
  - url: /.*
    script: auto
    secure: always

inbound_services:
- warmup

automatic_scaling:
  min_instances: 1
  min_idle_instances: 1
  max_instances: 2
  max_idle_instances: 1

Я также попытался передать точный путь в точке входа, т.е. точка входа: gunicorn -b: $ PORT main: app, но получил ту же ошибку

Я вызываю приложение gcloud для развертывания внутри моего виртуального окружения, но когда оно развертывается, оно не может читать установленные пакеты, например, daphne и gunicorn. Оба они отлично работают в локальной среде в одном каталоге с одинаковыми пакетами.

Я обращался к этим вопросам то и это и пробовал ответы, но ничего не помогло.

Ответы

1 MuhammadZeeshan Dec 16 2020 at 16:01

Механизму приложений GAE необходим файл requirements.txt в том же каталоге, что и app.yaml.

Мой файл requirements.txt находился в подпапке, поэтому движок приложений Google не смог установить Gunicorn. Я устанавливал требования локально и передавал установленные требования при развертывании, но, похоже, нет необходимости устанавливать их локально (кроме проверки изменений на локальном сервере).