【发布时间】: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