502 网关错误。 Django 谷歌应用程序引擎

问题描述 投票:0回答:3

我在 GAE 中部署了 django 项目,除了主页面外,所有页面上都出现 502 Bad Gateway 错误。以前的版本可以工作,但自从我添加了存储 API 调用(storages.backends.gcloud.GoogleCloudStorage)后就无法工作了。我在 settings.py 和 app.yaml 中添加了环境变量 GOOGLE_APPLICATION_CREDENTIALS 。日志显示此错误:

[error] 32#32: *111 upstream prematurely closed connection while reading response header from upstream, client: xxx.xxx.xxx.xxx, server: , request: "GET /accounts/login/ HTTP/1.1", upstream: "http://xxx.xxx.xxx.xxx:8080/accounts/login/", host: "xxxx.appspot.com", referrer: "https://xxxx.appspot.com/"

一切都在本地工作,所以该消息就是我所拥有的。 我尝试了谷歌群组和其他 stackoverflow 问题中的内容,但它不起作用。

谢谢你。

django google-app-engine google-cloud-storage
3个回答
8
投票

gcloud app logs tail -s default
会告诉您错误消息,因此请务必检查输出。我的是
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

我犯的其他一些错误是:

  • ALLOWED_HOSTS
     中的 
    DATABASES
    settings.py
  • 值错误
  • static_dir
    中的
    app.yaml
  • 值错误
  • 没有
    main.py

2
投票

我建议采取几个步骤来解决您的 Django 和 App Engine 问题。

您提到您已将 GOOGLE_APPLICATION_CREDENTIALS 添加到

settings.py
app.yaml
文件中。您还应该将其添加到用于部署应用程序的系统中。使用此命令:

export GOOGLE_APPLICATION_CREDENTIALS=[path to the .json credentials file]

除此之外,请确保您使用的 Django 版本高于 1.2 或 1.3,因为 Google Cloud 不再支持这些版本。

您可以在此处获得有关如何在 App Engine 应用程序中配置 Django 的更多信息,了解如何配置

app.yaml
settings.py
文件(或您用于设置的其他文件)。

根据您使用的 Python 版本,如果您使用 Python 2,最好在“标准”环境中部署;如果您使用 Python 3,则最好在“灵活”环境中部署。我在此处提供的链接是为了更好地理解的教程如何将 Django 与 App Engine 结合使用。一旦您测试了这些教程,您就可以将它们调整为您的代码,并且 对于那些想知道的人,App Engine 要求您在根目录中添加 main.py。您可以将文档中的代码添加到该文件中:


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.