在 Google App Engine 上托管网站 | 502 错误网关 | Worker 启动失败(记录器)
Hosting website on Google App Engine | 502 Bad Gateway | Worker failed to boot (logger)
我正在关注 this guide 在 GAE 上托管一个静态网站。屏幕截图是我的文件夹结构,其中 'formicidae' 是我项目的根目录,'www' 包含一些 HTML、CSS、JS 和图像文件。
使用 gcloud app deploy
部署没问题,但是当我想使用 gcloud app browse
.
浏览我的应用程序时,出现 502 bad gateway nginx 错误
检查记录器,我收到了一个 ModuleNotFoundError: No module named 'main'
错误,所以我在我的 app.yaml
中添加了一个新的入口点,看起来像 entrypoint: gunicorn -b :$PORT formicidae.wsgi --timeout 120
(也延长了超时)。
这没有解决问题,所以我添加了一个带有 from formicidae import app
的虚拟 main.py
脚本,但在我的记录器中收到错误 ModuleNotFoundError: No module named 'formicidae'
。
我将其更改为 from www import app
但收到 ImportError: cannot import name 'app' from 'www' (unknown location)
。
我不确定我使用这些解决方案之一是否正确,应该用其他东西替换 'formicidae' 或 'www',或者是否有完全不同的解决方案.
这是完整的记录器输出,向我展示了没有名为 'main'
的模块的原始错误
Traceback (most recent call last): File "/env/lib/python3.7/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker worker.init_process() File "/env/lib/python3.7/site-packages/gunicorn/workers/gthread.py", line 104, in init_process super(ThreadWorker, self).init_process() File "/env/lib/python3.7/site-packages/gunicorn/workers/base.py", line 129, in init_process self.load_wsgi() File "/env/lib/python3.7/site-packages/gunicorn/workers/base.py", line 138, in load_wsgi self.wsgi = self.app.wsgi() File "/env/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi self.callable = self.load() File "/env/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load return self.load_wsgiapp() File "/env/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp return util.import_app(self.app_uri) File "/env/lib/python3.7/site-packages/gunicorn/util.py", line 350, in import_app __import__(module) ModuleNotFoundError: No module named 'main'
编辑:添加了 app.yaml 内容的截图
根据 strack 跟踪,请注意您使用的是 Python 3.7,而您共享的 documentation 适用于 Python 2.7。请相应地调整您的 app.yaml
文件。
以下 documentation 将帮助您迁移到 Python 3 标准运行时。
请注意,使用 Python 3 运行时时,您的应用程序将使用 Django 或 Flask 等网络框架来路由请求。到目前为止,Python 2 曾经通过在 app.yaml
文件中定义 URL 处理程序来执行此操作。
我正在关注 this guide 在 GAE 上托管一个静态网站。屏幕截图是我的文件夹结构,其中 'formicidae' 是我项目的根目录,'www' 包含一些 HTML、CSS、JS 和图像文件。
使用 gcloud app deploy
部署没问题,但是当我想使用 gcloud app browse
.
检查记录器,我收到了一个 ModuleNotFoundError: No module named 'main'
错误,所以我在我的 app.yaml
中添加了一个新的入口点,看起来像 entrypoint: gunicorn -b :$PORT formicidae.wsgi --timeout 120
(也延长了超时)。
这没有解决问题,所以我添加了一个带有 from formicidae import app
的虚拟 main.py
脚本,但在我的记录器中收到错误 ModuleNotFoundError: No module named 'formicidae'
。
我将其更改为 from www import app
但收到 ImportError: cannot import name 'app' from 'www' (unknown location)
。
我不确定我使用这些解决方案之一是否正确,应该用其他东西替换 'formicidae' 或 'www',或者是否有完全不同的解决方案.
这是完整的记录器输出,向我展示了没有名为 'main'
的模块的原始错误Traceback (most recent call last): File "/env/lib/python3.7/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker worker.init_process() File "/env/lib/python3.7/site-packages/gunicorn/workers/gthread.py", line 104, in init_process super(ThreadWorker, self).init_process() File "/env/lib/python3.7/site-packages/gunicorn/workers/base.py", line 129, in init_process self.load_wsgi() File "/env/lib/python3.7/site-packages/gunicorn/workers/base.py", line 138, in load_wsgi self.wsgi = self.app.wsgi() File "/env/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi self.callable = self.load() File "/env/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load return self.load_wsgiapp() File "/env/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp return util.import_app(self.app_uri) File "/env/lib/python3.7/site-packages/gunicorn/util.py", line 350, in import_app __import__(module) ModuleNotFoundError: No module named 'main'
编辑:添加了 app.yaml 内容的截图
根据 strack 跟踪,请注意您使用的是 Python 3.7,而您共享的 documentation 适用于 Python 2.7。请相应地调整您的 app.yaml
文件。
以下 documentation 将帮助您迁移到 Python 3 标准运行时。
请注意,使用 Python 3 运行时时,您的应用程序将使用 Django 或 Flask 等网络框架来路由请求。到目前为止,Python 2 曾经通过在 app.yaml
文件中定义 URL 处理程序来执行此操作。