为了让这个应用能正常工作,我的头都快砸到桌子上了。我试图通过Google App Engine在gunicorn上部署一个简单的Flask应用。当访问该应用时,我得到了错误500,并在 "gunicorn: error: No application module specified. "在日志中。
我的布局大致是这样的。
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
我试着在gunicorn中创建另一个app. MyApp
文件夹,并添加服务。"default",但这也没用 我在这里几乎没有办法了。我很确定这个问题是因为主应用程序的代码被定义在了 MyApp
而不是直接在下面 Main_directory
. 我很欣赏简单的解决方案将是把所有的东西从。MyApp
文件夹,但我犹豫不决,因为这样做会扰乱我的 Git。我想创建main.py,然后直接实例化为 MyApp/__init__.py
将做的伎俩,但不完全似乎。
任何和所有的想法感谢。
如果你想使用gunicorn作为你的HTTP服务器,你需要告诉它你的WSGI应用在哪里。这可能是一个 app
在你 main.py
文件,所以你可以使用。
entrypoint: gunicorn -b :$PORT -w 1 main:app
就像通常的情况一样,在达到我的极限并提出一个问题后,我找到了一个答案... ...
我把入口点从 app.yaml
并将枪角从 requirements.txt
. 在重新部署应用时,现在可以用了。
我感觉这不是修复,而是变通。我还是不明白为什么以前不能用。一定有更好的解决方案,将gunicorn作为一个需求来维护。我估计是yaml出了问题。