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

如何在单个Jina Flow中同时支持gRPC与HTTP协议?

在Jina Flow中同时提供gRPC和HTTP服务的方案

可以在同一个Flow里同时提供gRPC和HTTP服务,无需部署两个独立Flow,通过添加多个网关组件即可实现,以下是具体实现方式:

方法一:用add_gateway逐个添加网关

先初始化Flow并添加业务Executor,再分别配置不同协议的网关,每个网关需指定独立端口避免冲突:

from jina import Flow, Client
from your_module import FooExecutor

# 初始化Flow并添加业务Executor
f = Flow().add(uses=FooExecutor)
# 添加gRPC协议网关,端口12345
f.add_gateway(protocol='grpc', port=12345)
# 添加HTTP协议网关,端口12346
f.add_gateway(protocol='http', port=12346)

with f:
    # 测试gRPC客户端
    grpc_client = Client(port=12345, protocol='grpc')
    grpc_docs = grpc_client.post(on='/')
    print("gRPC响应内容:", grpc_docs.texts)

    # 测试HTTP客户端
    http_client = Client(port=12346, protocol='http')
    http_docs = http_client.post(on='/')
    print("HTTP响应内容:", http_docs.texts)

方法二:初始化Flow时批量配置多个网关(Jina 3.x及以上版本支持)

直接在Flow的gateway参数中传入多网关配置列表,一步完成设置:

from jina import Flow, Client
from your_module import FooExecutor

f = Flow(
    gateway=[
        {'protocol': 'grpc', 'port': 12345},
        {'protocol': 'http', 'port': 12346}
    ]
).add(uses=FooExecutor)

with f:
    # 测试逻辑同上
    grpc_client = Client(port=12345, protocol='grpc')
    grpc_docs = grpc_client.post(on='/')
    print("gRPC响应内容:", grpc_docs.texts)

    http_client = Client(port=12346, protocol='http')
    http_docs = http_client.post(on='/')
    print("HTTP响应内容:", http_docs.texts)

注意事项

  • 不同网关必须使用不同端口,否则会出现端口占用冲突
  • 所有网关共享同一个Flow内的Executor集群,无需重复部署业务组件,资源利用更高效
  • 除gRPC和HTTP外,WebSocket等其他协议也可通过相同方式添加对应网关

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 06:01:01