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

Docker环境下aiohttp服务无法连接同网络FastAPI服务问题求助

问题原因
  • Docker Compose 同一项目下的默认网络中,容器之间通过服务名实现域名互访,你使用0.0.0.0作为请求地址不符合容器网络的访问规则。
  • 0.0.0.0仅用于进程监听当前设备所有网卡的请求,你在aiohttp容器内请求0.0.0.0:8080,实际是访问aiohttp容器自身的8080端口,该容器内没有对应服务监听这个端口,因此抛出连接失败错误。
  • 你配置的8080:8080端口映射仅适用于宿主机访问api服务,容器内部互访不会走宿主机的端口映射规则。
  • 额外排查点:你当前aiohttp代码中请求的json参数使用了json.dumps序列化,而aiohttp的session.post的json参数会自动对传入的字典做序列化,重复序列化会导致FastAPI侧解析参数出错。
解决方案
  1. 修改aiohttp服务的请求地址,将原有地址替换为api服务的服务名作为域名,同时修复json参数问题:
# 原错误写法
async with session.post("http://0.0.0.0:8080/accounts/", json=json.dumps({"i": i}), ssl=False) as response:
# 修改后的正确写法
async with session.post("http://api:8080/accounts/", json={"i": i}, ssl=False) as response:
  1. 重新构建启动服务即可生效:
docker-compose down && docker-compose up --build
  1. 可选优化:如果修改地址后仍偶发连接错误,是因为depends_on仅保证容器启动顺序,不保证api服务完全初始化完成,可以给aiohttp服务的启动增加几秒延迟,或者给接口请求增加重试逻辑即可。

内容的提问来源于stack exchange,提问作者psowa001

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:06:01