在 AWS 上使用 API 网关和 FastAPI 流式传输 SSE,同时保留身份验证

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

我最近将服务器发送事件 (SSE) 集成到我的 AWS 云架构中,以使用 FastAPI 流式传输生成式 AI 聊天机器人模型的响应。

我们目前的基础设施如下:

  • Gunicorn 与 uvicorn worker 托管的 FastAPI 应用程序
  • 运行 dockerized FastAPI 应用程序的 EKS
  • ALB 由安装在 EKS 上的入口控制器控制
  • API 网关,用于为 EKS 上托管的所有服务添加身份验证层

当我在本地使用 SSE 端点运行 FastAPI 时,它运行良好。但是当使用上述堆栈部署应用程序时,端点可以工作但响应不会流回。相反,它会在流完成时立即返回所有块。

经过深入调查,我发现在 API 网关之前一切都按预期工作。但是,当添加了 API 网关层(身份验证所必需的)时,响应将不再流式传输。我注意到在通过 API 网关时添加了内容长度标头,因此 API 网关似乎在添加标头并将其发送回客户端之前等待响应完全完成。

我正在寻找一种解决方案来支持 SSE,同时将身份验证层保留在应用程序代码之外。关于如何在这个 AWS 设置中启用 SSE 流式传输时保留身份验证的任何建议?

amazon-web-services aws-api-gateway amazon-eks server-sent-events openai-api
© www.soinside.com 2019 - 2024. All rights reserved.