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

求与NATS CLI的reply/request命令等价的拆分式Python示例

NATS 请求响应模式拆分Python示例

先确保安装依赖:

pip install nats-py

服务端(Reply 方)代码

创建文件 nats_reply.py,这是独立的服务进程,可启动多个实例实现轮询:

import asyncio
from nats.aio.client import Client as NATS

async def run():
    nc = NATS()
    # 连接本地NATS服务器(默认端口4222)
    await nc.connect("nats://localhost:4222")

    async def request_handler(msg):
        # 打印收到的请求内容
        print(f"收到请求: {msg.data.decode()}")
        # 回复固定内容
        await nc.publish(msg.reply, b"OK, I CAN HELP!!!")

    # 订阅指定subject,处理请求
    await nc.subscribe("greet.sue", cb=request_handler)

    # 保持服务运行
    await asyncio.Future()

if __name__ == "__main__":
    asyncio.run(run())

客户端(Request 方)代码

创建文件 nats_request.py,用于发起请求:

import asyncio
from nats.aio.client import Client as NATS

async def run():
    nc = NATS()
    await nc.connect("nats://localhost:4222")

    # 发起请求,超时设置为5秒
    response = await nc.request("greet.sue", b"I need help!", timeout=5)
    print(f"收到响应: {response.data.decode()}")

    await nc.close()

if __name__ == "__main__":
    asyncio.run(run())

运行方式

  1. 打开两个终端,分别运行服务端:
    python nats_reply.py
    
  2. 打开第三个终端,运行客户端发起请求:
    python nats_request.py
    
  3. 多次运行客户端,会看到两个服务端实例以**round-robin(轮询)**的方式交替处理请求并回复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 01:50:55