Google App Engine 标准不能 find/execute Gunicorn

Google App Engine Standard can not find/execute Gunicorn

我有一个带有 Django 后端和 Angular 前端的项目。我已将它们作为两项服务部署到 Google App Engine Standard 并且部署成功.

但是,当我尝试访问后端 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

但还是报同样的错误

我在 Whosebug 上调查了所有相同的问题,它们要么是因为要求,要么是因为我定义了它们的入口点。

即使我转到 Stackdriver,我也可以看到 app engine:/:

中的 gunicorn 文件夹
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']

如果有人有任何解决方案或建议,我将不胜感激,因为我已经在 Internet 上调查了几乎所有相同的问题。

谢谢,

詹姆斯

默认情况下,App Engine 在应用程序目录的根目录中查找 main.py 文件,其中包含一个名为 app 的 WSGI-compatible 对象。

文档 here 建议如果您在 app.yaml 文件中指定入口点,则可以在 requirements.txt 文件中包含 gunicorn,但是您想要的版本安装好像和默认的有冲突。

要解决这个问题,我建议您删除 requirements.txt 文件中的 gunicorn 依赖项和 app.yaml 中的入口点并创建一个这样的 main.py 文件:

from thisapp.wsgi import application

app = application

这样它会回退到上面解释的默认行为并且应该可以正常工作。官方也是这样实现的sample code.