Google App Engine 没有为我在 app.yaml 中定义的入口点提供服务

Google App Engine is not servig my defined entrypoint in app.yaml

Google App Engine 不会在 python37 运行时提供我定义的入口点。 GAE 仍然尝试提供 main.py 文件。

项目结构

/backend/__init__.py
/backend/views.py
/backend/models.py
app.yaml

app.yaml

service: backend
runtime: python37
entrypoint: gunicorn -b :$PORT backend:app
handlers:
  - url: /.*
    script: auto
    secure: always
    redirect_http_response_code: 301

/backend/init.py

from flask import Flask
...
app = Flask(__name__)
...
import backend.models
import backend.views
if __name__ == '__main__':
    app.run()

GAE 错误信息

File "<frozen importlib._bootstrap>", line 965, in _find_and_load_unlocked: ModuleNotFoundError: No module named 'main'

您需要配置 gunicorn 以查看您的 init.py 所在的目录。有两种方法可以在您的入口点执行此操作:

entrypoint: gunicorn -b :$PORT --chdir backend init:app 

entrypoint: gunicorn -b :$PORT backend.init:app 

如果您在 app.yaml 文件中使用 gunicorn 指定自定义 entrypoint,则必须在 requirements.txt 中安装 gunicorn。这对我有用并解决了这个问题!