【问题标题】:Google App Engine Produces 502 Error on Python/Flask APIGoogle App Engine 在 Python/Flask API 上产生 502 错误
【发布时间】:2018-06-21 10:29:12
【问题描述】:

我一直在使用谷歌,并且阅读并阅读每一篇我能找到但无法解决我的问题的文章。我最近想把我仍在开发中的项目放在 GAE 上,这样我就可以对其进行测试并确保它可以按照我的假设工作。经过一些尝试和错误后,我能够设置 Postgres 数据库并使用

推送我的项目
gcloud app deploy app.yaml

我的 Flask 应用程序使用 Swagger 和 Flask-Restplus 作为 API。我可以访问 swagger 页面并执行一些请求,但是所有这些请求都会返回

502 Bad Gatway

在控制台中阅读实时日志时,我可以看到数据正在按预期输入。没有例外,GAE 错误控制台甚至没有记录 502 错误。在控制台我也可以看到..

[CRITICAL] WORKER TIMEOUT (pid:17)

所以我进入日志并看到这个 NGINX 错误..

textPayload:  "[error] 32#32: *4086 upstream prematurely closed connection while reading response header from upstream, client: 130.211.2.231, server: , request: "POST /auth/login_user HTTP/1.1", upstream: "http://172.17.0.1:8080/auth/login_user", host: "blah-191811.appspot.com", referrer: "http://blah-191811.appspot.com/""  

我认为连接到我的数据库不是错误,因为我可以从本地计算机连接到托管在 GAE 上的 Postgres DB。我还有另一个 API 端点,它只使用 google API 来检索一些信息,并且也会产生 502 错误。

如果我无法解决这个问题,我实在是束手无策,老实说,我正准备认输并尝试在 AWS 上运行它。任何帮助将不胜感激。

编辑更多信息:

问题仍然存在。但是,我的 API 上有两条路由需要有效的 JWT 标头。当使用这些带有无效标头令牌或没有令牌的路由时,API 返回正确的响应,即 401。发送正确的令牌时,API 再次返回 502。这让我相信我的代码没有任何问题,但是响应没有被发回的地方。

我应该补充一点,这些不是数据密集型调用。 login_user 只是两个字符串,一个电子邮件和一个密码。数据库中只有一个条目。

当我在本地运行但连接到远程 Postgres 数据库时,API 按预期工作。即,如果我在本地运行 Flask 服务器并执行; 127.0.0.1:5000/auth/login_user 并发送正确的信息,它能够从我的 GAE 项目的 Postgres 数据库中读取。所以我也不认为数据库是问题所在。

仍在寻找任何智慧,因为这似乎是一个非常普遍的问题,几乎没有解决办法。

【问题讨论】:

    标签: python postgresql google-app-engine nginx


    【解决方案1】:

    对于其他遇到此问题的人..我经过大量挖掘找到了解决方案。这是我在 GAE 上连接到 potgres SQL 实例的方式。

    我在用这个;

    SQLALCHEMY_DATABASE_URI = 'postgresql://user:password@remote.ip.addr/database_name'
    

    当您从列入白名单的 IP 访问 SQL 实例时,此代码可以正常工作。但是,此代码将无法在同样在 GAE 上运行的实例中运行。你需要把它改成这个;

    SQLALCHEMY_DATABASE_URI = 'postgresql://user:password@/database_name?
    host=/cloudsql/database_instance_id'
    

    【讨论】:

      猜你喜欢
      • 2021-03-31
      • 2018-11-05
      • 2016-10-28
      • 2021-10-02
      • 1970-01-01
      • 2020-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多