![](/img/trans.png)
[英]Google Cloud App Engine: 502 Bad Gateway (nginx) error with Flask App
[英]Django gives “502 Bad Gateway” error on Google App Engine
我正在尝试在标准 Python3.8 环境中的 Google App Engine 上部署 Django 应用程序。 我遵循了本文档中的所有步骤。 应用程序在我的本地使用谷歌云数据库运行良好。 但是,我在访问 Web Url 时收到502 Bad Gateway
错误。 我发现了很多不同的问题,但技术正在发生很大变化,到目前为止,它们都没有帮助。 最后,我今天遇到了这个解决方案,但它说创建一个我在谷歌文档中从未见过的gcloud.py
文件,这就是为什么我没有应用该解决方案但决定问你的原因。
访问页面时出现此错误
Traceback (most recent call last):
_find_and_load (<frozen importlib._bootstrap>)
这是错误的堆栈跟踪:
File "<frozen importlib._bootstrap>", line 973, in _find_and_load_unlocked: ModuleNotFoundError: No module named 'main'
at _find_and_load (<frozen importlib._bootstrap>:991)
at _gcd_import (<frozen importlib._bootstrap>:1014)
at import_module (/opt/python3.8/lib/python3.8/importlib/__init__.py:127)
at import_app (/layers/google.python.pip/pip/lib/python3.8/site-packages/gunicorn/util.py:358)
at load_wsgiapp (/layers/google.python.pip/pip/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py:39)
at load (/layers/google.python.pip/pip/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py:49)
at wsgi (/layers/google.python.pip/pip/lib/python3.8/site-packages/gunicorn/app/base.py:67)
at load_wsgi (/layers/google.python.pip/pip/lib/python3.8/site-packages/gunicorn/workers/base.py:144)
at init_process (/layers/google.python.pip/pip/lib/python3.8/site-packages/gunicorn/workers/base.py:119)
at init_process (/layers/google.python.pip/pip/lib/python3.8/site-packages/gunicorn/workers/gthread.py:92)
at spawn_worker (/layers/google.python.pip/pip/lib/python3.8/site-packages/gunicorn/arbiter.py:583)
我的站点/wsgi.py
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "my_site.settings")
application = get_wsgi_application()
这是我的应用程序。yaml
runtime: python38
handlers:
# This configures Google App Engine to serve the files in the app's
# static directory.
- url: /static
static_dir: static/
# This handler routes all requests not caught above to the main app.
# It is required when static routes are defined, but can be omitted
# (along with the entire handlers section) when there are no static
# files defined.
- url: /.*
script: auto
这是settings.py。 我尝试使用注释行,但它仍然给出相同的错误。
STATIC_URL = '/static/'
STATIC_ROOT = 'static'
# STATIC_ROOT = os.path.join(BASE_DIR, '/static/')
# STATICFILES_DIRS = (
# os.path.join(BASE_DIR, 'static'),
# )
# MEDIA_URL = '/media/'
# MEDIA_ROOT = os.path.join(BASE_DIR, "media")
# STATICFILES_FINDERS = [
# 'django.contrib.staticfiles.finders.FileSystemFinder',
# 'django.contrib.staticfiles.finders.AppDirectoriesFinder',
# ]
appengine_config.py
from google.appengine.ext import vendor
vendor.add('lib')
我的 lib 文件夹中有这两个库。 我从 env 文件夹中手动移动了它们。
django
MySQLdb
该应用程序抱怨找不到main
模块,您提到的文档与您的问题不同,您还没有达到使用存储库的地步。
关于你的具体问题。 如文档中所述:
运行时通过运行您在 app.yaml 文件的入口点字段中指定的命令来启动您的应用程序。
在这种情况下,您的app.yaml
没有指定入口点,发生这种情况时,您必须确保满足以下要求:
如果您的应用满足以下要求,且您未指定入口点字段,App Engine 将使用 gunicorn web 服务器启动您的应用:
app 目录的根目录包含一个 main.py 文件,其中包含一个与 WSGI 兼容的 object,名为 app。
您的应用不包含 Pipfile 或 Pipfile.lock 文件。
在这种情况下,您的应用程序缺少main.py
文件,这是 App Engine 抱怨的错误。 有多种方法可以避免此错误(例如指定entrypoint )。 在这种情况下,我的建议是在应用程序的根文件夹中创建一个名为main.py
的文件,并包含以下内容:
from mysite.wsgi import application
app = application
可以在此处找到包含运行 Django 应用程序所需结构的示例
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.