【问题标题】:Google App Engine Django Project Infinite Loading and error 500 does not raise any error in logsGoogle App Engine Django 项目无限加载和错误 500 不会在日志中引发任何错误
【发布时间】:2022-01-04 17:58:35
【问题描述】:

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

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

当我尝试在浏览器中加载页面时,会无限加载,直到页面最终返回“服务器 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

在谷歌云的错误报告页面中也没有出现

这是我的 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:

我刚刚检查了问题是否是由数据库连接产生的,但实际上不是。如果没有任何错误,页面甚至没有加载,我认为是我搞砸了一些配置,但是,我只是按照谷歌云官方网站上的步骤操作

【问题讨论】:

  • 能否确认环境变量GAE_APPLICATION的值?还很好奇为什么您的入口点是运行云 SQL 的端口
  • 事实是,如果我尝试执行print(os.getenv('GAE_APPLICATION', None)),它不会打印任何内容.. 就好像程序甚至没有启动...顺便说一下,我会尝试更改端口
  • 我将 app.yaml 中入口点值的端口从 5432 更改为 8000,但没有任何变化。我仍然从日志中得到那四行
  • 不要认为你的工作会奏效,因为BASE DIR 表示本地路径,标准环境只能访问基本上在内存中的/tmp。您的应用可以在本地机器上运行吗?
  • 我的应用只能在本地机器上运行。我尝试了几天试图解决这个问题。我必须在 30 天内完成这项工作,我不知道如何解决这个问题。该页面会无限加载,直到加载 5 或 10 分钟后,它会引发 500 错误。在我的代码中没有错误:例如,如果我故意犯了语法错误,它会出现在日志中,但是,正如我所说,我的代码中没有错误,我仍然看不到我的网站正常运行

标签: python django google-app-engine google-cloud-platform google-app-engine-python


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    显然这个错误是由于建议here的应用程序错误而收到的,用户还谈到看看部署设置,因为生产和本地主机不同并设置DEBUG = FALSE。以下是如何configure your app for production 的指南。

    另一个 question 指向在 Google Cloud Platform 仪表板中查找 Error Reporting 面板,以获取代码中问题的堆栈跟踪(如果存在)。这有助于解决 500 错误。

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

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

    【讨论】:

    • 我试了好几天的一切,伙计。如果代码中没有错误,则页面将无限加载。我必须在 30 天内提交这个网站,我只需要做这一步。从字面上尝试一切。日志什么也没说,页面什么也没说。它只适用于本地主机。生无可恋。日志内容示例:2021-11-26 15:46:35.517 UTC [1755516]: [2-1] db=,user= LOG: automatic analyze of table "cloudsqladmin.public.heartbeat" system usage: CPU: user: 0.00 s, system: 0.00 s, elapsed: 0.00 s。没有提到任何错误
    • tutorialquickstart 之后,我能够部署应用程序,但是比较您提供的这些文档和Github example,发现了一些差异。我建议您将 Secrets Manager 与 environ 一起使用。请查看解释结构的问题 62311579。
    • 我过去也这样做过,但它不起作用。现在我又试了一次,还是不行。如果我按照以下步骤操作,这就是我得到的错误:django.db.utils.OperationalError: could not translate host name "/cloudsql/projectid:europe-west3:name" to address: Unknown host。所以我决定像问题中那样手动添加数据库变量dict。如果我喜欢它,它可以工作,但页面不会加载。这就是我的数据库 URL:export DATABASE_URL=postgres://user:pass@//cloudsql/project_id:europe-west3:project_name/db_name。我想知道,为什么没有指定端口?
    猜你喜欢
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    • 1970-01-01
    • 2019-01-03
    • 2019-01-19
    相关资源
    最近更新 更多