繁体   English   中英

在 Google App Engine 中部署 Flask 应用程序导致“gunicorn:错误:未指定应用程序模块。”

[英]Deploying Flask app in Google App Engine resulting in "gunicorn: error: No application module specified."

把我的头撞在桌子上,试图让它工作。 我正在尝试通过 Google App Engine 在 gunicorn 上部署一个简单的 Flask 应用程序。 访问该应用程序时,我收到错误 500,显示“gunicorn:错误:未指定应用程序模块。” 在日志中。

我的布局大致是:

Main_Directory/
|-MyApp/
|   |-__init__.py <- Containing majority of code
|   |-templates/
|   |-static/
|-app.yaml
|-main.py 
|-requirements.txt

main.py只是从MyApp导入应用程序并实例化一个名为“app”的新实例。

requirements.txt具有所有依赖项,包括 gunicorn。

app.yaml 如下:

runtime: python37
instance_class: F1
default_expiration: "4d 12h"
entrypoint: gunicorn -b :$PORT -w 1

env_variables:
  BUCKET_NAME: "bucket_name"

handlers:
- url: /.*
  script: auto

我尝试在MyApp文件夹中创建另一个 app.yaml 并添加服务:“默认”但这没有帮助。 我在这里几乎没有想法。 我相当确定问题是因为主应用程序代码是在MyApp中定义的,而不是直接在Main_directory下。 我很欣赏简单的解决方案是将MyApp文件夹中的所有内容提升一个级别,但我犹豫是否要这样做,因为它会弄乱我的 Git。我认为创建 main.py 并直接实例化MyApp/__init__.py会做把戏,但似乎并不完全是。

任何和所有的想法表示赞赏。

通常情况下,在达到我的极限并提出问题后,我找到了答案......

我从app.yaml中删除了入口点,并从requirements.txt中删除了 gunicorn。 在重新部署应用程序时,它现在可以工作了。

我觉得这不是一个解决方法,而是一种解决方法。 我仍然不确定为什么它以前不起作用。 必须有更好的解决方案来保持 gunicorn 作为要求。 我预计错的是 yaml。

如果你想使用 gunicorn 作为你的 HTTP 服务器,你需要告诉它你的 WSGI 应用程序的位置。 这可能是您的main.py文件中的一个app变量,因此您可以使用:

entrypoint: gunicorn -b :$PORT -w 1 main:app

可能导致此错误的另一件事是缺少gunicorn.conf.py文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM