- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 Gunicorn 配置的 FastAPI 服务器,部署在 AWS App Runner 上。当我尝试访问端点时,它运行良好,但是,24 小时后,当我尝试访问同一端点时,我收到 502 错误网关错误,此后 cloudWatch 上没有任何记录,直到我重新部署应用程序,然后它又开始正常工作了。
我怀疑这与我的 Gunicorn 配置本身有关,它在一段时间后以某种方式关闭了我的 API,而不是 AWS App Runner,但我还没有找到任何解决方案。我还在下面展示了我的 Gunicorn 设置。任何帮助将不胜感激。
from fastapi import FastAPI
import uvicorn
from fastapi.middleware.cors import CORSMiddleware
from gunicorn.app.base import BaseApplication
import os
import multiprocessing
api = FastAPI()
def number_of_workers():
print((multiprocessing.cpu_count() * 2) + 1)
return (multiprocessing.cpu_count() * 2) + 1
class StandaloneApplication(BaseApplication):
def __init__(self, app, options=None):
self.options = options or {}
self.application = app
super().__init__()
def load_config(self):
config = {
key: value for key, value in self.options.items()
if key in self.cfg.settings and value is not None
}
for key, value in config.items():
self.cfg.set(key.lower(), value)
def load(self):
return self.application
@api.get("/test")
async def root():
return 'Success'
if __name__ == "__main__":
if os.environ.get('APP_ENV') == "development":
uvicorn.run("api:api", host="0.0.0.0", port=2304, reload=True)
else:
options = {
"bind": "0.0.0.0:2304",
"workers": number_of_workers(),
"accesslog": "-",
"errorlog": "-",
"worker_class": "uvicorn.workers.UvicornWorker",
"timeout": "0"
}
StandaloneApplication(api, options).run()
最佳答案
我遇到了同样的问题。经过大量试验和错误后,两个更改似乎为我解决了这个问题。
设置 uvicorn --timeout-keep-alive
到 65。对于 gunicorn,此参数为 --keep-alive
.我假设如果 uvicorn 在 ALB 之前关闭 tcp 套接字,Application Load Balancer 将抛出 502。
更改 App Runner 健康检查以使用 HTTP 而不是 TCP ping 来管理容器回收。目前 AWS UI 不允许您进行此更改。您将必须使用 aws cli 执行此操作。使用任何事件的 URL 路径进行 ping 检查 - 在你的情况下/test
aws apprunner update-service --service-arn <arn> --health-check-configuration Protocol=HTTP,Path=/test
#2 可能足以解决问题。
关于python - 在 AWS App Runner 上运行的 FastAPI 服务器在 24 小时后失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70611806/
我在自己的 ubuntu 服务器上有一个简单的 gitlab-runner 设置。它是使用以下方式注册的: sudo gitlab-runner register -n --url https://g
我的 flutter 项目不适用于 ios 设备。 我试过下面的命令sudo gem install cocoapods . flutter 跑: Warning: CocoaPods not ins
我有一个包含2 个作业的管道。 我在 windows 上使用 Debug模式以 super 用户身份启动用户并收到下一个输出: Checking for jobs... received
当我尝试构建我的应用程序时,我在控制台中收到此错误: Xcode build done. 114,3s Failed
我试图让 Karma runner 在 Jenkins 构建期间生成 cobertura 格式的代码覆盖率报告。我可以让它生成一个coverage.xml 文件,但它实际上没有任何覆盖数据。似乎(使用
我正在使用 Windows 10 并使用 Gitlab's doc 安装了 gitlab-runner . 成功安装和注册后,我尝试离开我用来安装的文件夹(C:\Gitlab-Runner 在我的实例
我正在使用 Windows 10 并使用 Gitlab's doc 安装了 gitlab-runner . 成功安装和注册后,我尝试离开我用来安装的文件夹(C:\Gitlab-Runner 在我的实例
我正在尝试创建一个 kubernetes gitlab 运行程序,但遇到了非常普遍的错误 Failed to register the runner. You may be having networ
我曾经在 github 上有一个项目 travis和一个 appveyor已配置集成服务。因此,我能够确保我的项目在 OSX 和 Windows 平台上都可以正常编译。 我现在正在使用 gitlab
在我们的 Gitlab 服务器上,我有两个存储库,其中一个存储库('EPSILON-SDK-C')是另一个存储库中的子模块。当我在我的开发人员机器上本地运行 gitlab-runner sudo g
我正在使用带有 docker+machine 执行程序的 gitlab 运行程序来启动 AWS 上的自动缩放运行程序。我想在运行者中使用 docker-in-docker setup 来构建容器,但我
关于announcement关于 SonarQube 与 MSBuild 和 Team Build 的集成,谁能就 SonarQube Runner 和 SonarQube.MSBuild.Runne
我正在尝试使用带有 shell 执行程序的 gitlab-runner 提取代码。 $ git pull origin master error: cannot open .git/FETCH_H
我正在尝试对远程 Weblogic 12.1.x 进行非常简单的 Arquillian 测试,例如我有以下内容 public class MyBean { } 然后是测试 @RunWith(Arqui
我的环境是 Centos 7,我刚刚安装了 gitlab-runner,当我以安装 gitlab-runner 的用户身份运行此命令时(不是以 root 身份) sudo gitlab-runner
我的环境是 Centos 7,我刚刚安装了 gitlab-runner,当我以安装 gitlab-runner 的用户身份运行此命令时(不是以 root 身份) sudo gitlab-runner
我正在尝试在 Android Studio 中运行仪器测试。 我已经研究并尝试了很多,但我无法克服这个错误消息。 我的模块依赖: (编译) +--- com.crashlytics.sdk.andro
我正在尝试执行我的以下测试套件: import unittest from Login_Page import LoginPageAndLogout def test_suite(): # g
我刚刚使用来自 sonarqube.com 的指南在 Windows 7 上安装了 sonnar runner 我在C盘安装了sonnarqube4.5和sonar-runner,但是我的项目在D盘的
我使用 Dataflow 运行程序测试了我的代码,但它返回错误: > Error message from worker: java.lang.RuntimeException: > org.apac
我是一名优秀的程序员,十分优秀!