google-app-engine - 如何防止 GAE 抛出 ERROR 502?
问题描述
就我而言,这是错误的原因,因为我的应用程序需要很长时间才能发送响应。我只想知道我应该将哪些参数添加到我的app.yaml
文件中,以便deadline
从 30 秒更改为 120 秒。
我的app.yaml
代码
runtime: python
env: flex
entrypoint: gunicorn -b :$PORT app:app
runtime_config:
python_version: 3
resources:
cpu: 4
memory_gb: 8
解决方案
根据官方文档,App Engine Standard 针对具有短暂请求(几百毫秒)的应用程序进行了优化。
但是,请求可能需要长达 60 秒的时间才能响应。在此时间段之后,请求处理程序将被中断。
一个不能很好地与 App Engine 的基础架构一起扩展的应用程序。
我建议使用Google Stackdriver Trace来查找您的应用程序请求执行时间大于 60 秒的原因。
编辑
提供的答案是针对 Google App Engine Standard。我注意到您正在使用 Google App Engine Flex。60 秒的限制不适用于 Google App Engine Flex,因为
应用程序实例在 Compute Engine 虚拟机 (VM) 上的 Docker 容器中运行。
App Engine Flex 推荐用于:
接收一致的流量、经常出现流量波动或满足逐步扩展和缩减参数的应用程序。
30 秒错误超时可能是 gunicorn 服务器超时。
更改您的 app.yaml,添加-t 120
(超时 120 秒):
runtime: python
env: flex
entrypoint: gunicorn -t 120 -b :$PORT main:app
在这里您可以找到相关的 SO 问题链接。
推荐阅读
- .net - 如何在 VB.net 中正确地将字符串转换为十进制
- flutter - 颤振:showDialog() 上的 setState
- c# - 从后面的代码启动命令行 exe (ngrok) 的正确方法
- django - 如何在 JSONField 上使用 django-filter
- c# - 引用由第 3 方可执行文件在构建期间创建的 DLL
- python - 来自 Python request.session() 的请求没有记录在 Charles 中
- python - 在 Django 中使用外部数据库进行用户登录
- c# - webserver 在 IHostedService 启动之前开始处理请求
- javascript - AngularJS 在用户离开的地方保持类别扩展
- node.js - nodejs socket.io socket on 不是一个函数