Google App Engine Django 项目无限加载和错误 500 不会在日志中引发任何错误

Google App Engine Django Project Infinite Loading and error 500 does not raise any error in logs

我正在尝试在 Google Cloud App Engine 上部署 Django 项目。

我使用命令 gcloud app deploy 部署了我的应用程序。

当我尝试在浏览器中加载页面时,会出现无限加载,直到页面最终 returns 出现“服务器 500 错误”。

然后我决定通过执行 gcloud app logs tail 查看日志中是否有奇怪的东西,但它不会引发任何类型的错误,这就是我得到的。

2021-11-26 17:38:31 default[version_code]  [2021-11-26 17:38:31 +0000] [11] [INFO] Starting gunicorn 20.1.0
2021-11-26 17:38:31 default[version_code]  [2021-11-26 17:38:31 +0000] [11] [INFO] Listening at: http://0.0.0.0:8000 (11)
2021-11-26 17:38:31 default[version_code]  [2021-11-26 17:38:31 +0000] [11] [INFO] Using worker: sync
2021-11-26 17:38:31 default[version_code]  [2021-11-26 17:38:31 +0000] [16] [INFO] Booting worker with pid: 16

也在 GOOGLE 云的错误报告页面中 什么都没有出现

这是我的 Python Django settings.py:

if os.getenv('GAE_APPLICATION', None):
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql',
            'HOST': 'cloudsql/<my-google-cloudsql-connection-string>',
            'NAME': 'database_name',
            'USER': 'username',
            'PASSWORD': 'password',
            'PORT': '5432',
        }
    }
else:
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': BASE_DIR / 'db.sqlite3',
        }
    }

这是我的 app.yaml 文件:

runtime: python39
env: standard
app_engine_apis: true
handlers:
- url: /static
  static_dir: static/
- url: /.*
  script: auto

entrypoint: gunicorn -b :8000 NG.wsgi

我在部署期间也收到此警告:Updating service [default]...|WARNING: There is a dependency on App Engine APIs, but they are not enabled in your app.yaml. Set the app_engine_apis property.

在我的app.yaml中我配置了app_engine_apis属性,为什么它发出警告?

编辑 1:

我刚刚检查了问题是否是由数据库连接产生的,但实际上不是。如果没有任何错误,页面甚至不会加载,我认为我搞砸了一些配置,但是,我只是按照 GoogleCloud

官方网站上的步骤操作

在寻找与“500 服务器错误”类似的问题时,我发现了一些对您有用的信息。

显然收到此错误是由于建议的应用程序错误, the user also talks about taking a look at the deployment settings since the production and local hosts are different and set DEBUG = FALSE. Here is a guide on how to configure your app for production

Google 云平台仪表板中的另一个 question points to look for the Error Reporting 面板,用于获取代码中问题的堆栈跟踪(如果存在)。这有助于解决 500 错误。

在同一个问题中,用户回答这个问题很难直接解决,您需要出于各种原因进行调查,正如我们在此 discussion 中看到的那样,他们要求 OP 提供日志以提供进一步的帮助。然后,在检查他们之后,OP 得到了他自己的解决方案。

我建议查看配置以检查生产部署是否一切正常,尝试在错误报告面板中检查更多信息,如果您有日志但仍然无法解决发布另一个问题或使用此信息更新问题。

我通过删除 app.yaml 文件中的这一行解决了错误。

就是那一行entrypoint: gunicorn -b :8000 NG.wsgi

我想您在 App Engine 上部署 Django 应用程序时不必指定入口点。