首页 > 解决方案 > 在 Google App Engine 上托管网站 | 502 错误网关 | Worker 无法启动(记录器)

问题描述

我正在按照本指南在 GAE 上托管一个静态网站。截图是我的文件夹结构,其中“formicidae”是我的项目的根目录,“www”包含一些 HTML、CSS、JS 和图像文件。

部署很好gcloud app deploy,但是当我想浏览我的应用程序时收到 502 bad gateway nginx 错误gcloud app browse

检查记录器,我收到一个ModuleNotFoundError: No module named 'main'错误,所以我在我的 中添加了一个新入口点app.yaml,看起来像entrypoint: gunicorn -b :$PORT formicidae.wsgi --timeout 120(也延长了超时)。

这并没有解决问题,所以我添加了一个带有 的虚拟main.py脚本,但在我的记录器中from formicidae import app收到了错误。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 内容的截图

在此处输入图像描述

在此处输入图像描述

标签: google-app-engineweb-testingbad-gateway

解决方案


根据 strack 跟踪,请注意您使用的是 Python 3.7,并且您共享的文档适用于 Python 2.7。请app.yaml相应地调整您的文件。

以下文档将帮助您迁移到 Python 3 标准运行时。

请注意,当使用 Python 3 运行时,您的应用程序将使用 Django 或 Flask 等 Web 框架来路由请求。app.yaml到目前为止,Python 2 通过在文件中定义 URL 处理程序来做到这一点。


推荐阅读