[英]Is there any alternative approach other than deploying python flask application in Google app engine flex environment?
[英]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.