You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Traefik作为负载均衡时,Docker容器间无法消费SSE数据流的问题求助

Traefik作为负载均衡时,Docker容器间无法消费SSE数据流的问题求助

我搭了一套基础的Docker部署环境:factory-service会生成持续的数据流,通过FastAPI对外暴露,目标是给另一个容器verification-service消费。我想用Traefik作为两个容器之间的负载均衡器。

目前的情况是:我可以直接用http://localhost:8001/stream消费数据流,也能通过Traefik的http://factory.localhost/stream访问到,但就是没法在verification-service容器里消费这个流。

下面是我的相关代码和配置:

factory-service的FastAPI代码

@app.get("/stream")
async def stream_data():
    return StreamingResponse(generate_sensor_data(), media_type="text/event-stream")

verification-service的代码

import requests

print("Connecting ...")
response = requests.get("http://factory.localhost/stream", stream=True)
print(response.status_code, response.text)

docker-compose配置

services:
  factory-service:
    build:
      context: ./factory
      dockerfile: Dockerfile
    container_name: factory_service
    ports:
      - "8001:8001"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.factory.rule=Host(`factory.localhost`)"
      - "traefik.http.services.factory.loadbalancer.server.port=8001"
      - "traefik.http.middlewares.sse.headers.customResponseHeaders.Access-Control-Allow-Origin=*"
      - "traefik.http.middlewares.sse.headers.customResponseHeaders.Cache-Control=no-cache"
      - "traefik.http.middlewares.sse.headers.customResponseHeaders.Connection=keep-alive"
      - "traefik.http.routers.factory.middlewares=sse"
      - "traefik.http.routers.factory.entrypoints=web"
    networks:
      - app-network

  verification-service:
    build:
      context: ./verification
      dockerfile: Dockerfile
    container_name: verification_service
    depends_on:
      factory-service:
        condition: service_started
    networks:
      - app-network

  traefik:
    image: traefik:v3.3
    command:
      - "--log.level=DEBUG"
      - "--api.insecure=true"
      - "--providers.docker"
      - "--providers.docker.exposedbydefault=false"
      - "--entryPoints.web.address=:80"
    ports:
    - "80:80"
    - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    networks:
    - app-network

networks:
  app-network:
    driver: bridge

我已经看过一些相关问题和flexguse的文档,但没法把他们的解决方案适配到我的场景里,希望能得到大家的帮助。

备注:内容来源于stack exchange,提问作者LeXXan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 19:53:04