Jina 是一个神经搜索框架,它使任何人都可以在几分钟内在云上构建可扩展且可持续的神经搜索系统。
Jina 3.7.0 正式发布,本期主要更新如下:
浮动执行器
可以在 Flow 中添加浮动执行器。这种在 Flow 中添加 Executor 的方式可用于正在构建的服务,响应不需要的异步后台任务。
f = Flow().add().add(needs=['gateway'],floating=True)
#4967 #5004
每个执行器的参数🏃
可以使用语法 executorname__paramname
向每个 Executor 发送特定参数。
from jina import Flow, DocumentArray
with Flow().add(name='exec1').add(name='exec2') as flow:
flow.index(
DocumentArray.empty(size=5),
parameters={'exec1__traversal_path': '@r', 'exec2__traversal_path': '@c'},
)
#4939
将多个 Executor 端点映射到同一个方法🗺️
现在可以将不同的端点动态映射到同一个 Executor。
from jina import Flow, requests, Executor, Document, DocumentArray, Client
class MyExec(Executor):
@requests(on='/foo')
def foo(self, docs, **kwargs):
for d in docs:
d.text = 'foo'
# change bind to bar()
f = Flow().add(uses=MyExec, uses_requests={'/index': 'foo', '/search': 'foo'})
with f:
req = Client(port=f.port).post(
'/index', Document()
)
print(req[0].text)
#5009
从已安装的 Python 模块导入 Executor
f = Flow().add(uses='MyExecutor', py_modules=['module.path.to.my_executor'])
#4954 #5013
在每个 Runtime 上公开 Jina 环境信息ℹ️
每个 Flow 微服务都提供一个端点,该端点公开有关其运行环境的相关信息。
#4902
其他变化
- 在本地运行 Flow 时,支持为每个副本传递不同的监控端口 #4961
- 在日志中显示副本的监控端口 #4956
- 无需序列化 DocumentArray protobuf ,即可从 Request 中高效访问参数 #4991
- 从网关异步发送收集端点请求,而不等待它们 #5015
Bug 修复
- 修复网关如何处理预取的问题 #5012
- 修复网关尝试重新连接到重新生成的执行器时观察到的问题 #4941
- 修复存在通信异常时某些监控指标的错误 #4974
更新公告:https://github.com/jina-ai/jina/releases/tag/v3.7.0