Asynchronous 使用ZeroRPC进行流式处理

Asynchronous 使用ZeroRPC进行流式处理,asynchronous,zeromq,publish-subscribe,zerorpc,Asynchronous,Zeromq,Publish Subscribe,Zerorpc,您可能知道,ZeroRPC文档非常稀少。我无法在Python服务器和节点客户端之间进行流式处理 以下是Python方法: @zerorpc.stream def PublishWhaterver(self, some_args): yield "love" yield "stack" yield "overflow" 以下是节点调用: export const tryStream = () => { connectedZerorpcClient.inv

您可能知道,ZeroRPC文档非常稀少。我无法在Python服务器和节点客户端之间进行流式处理

以下是Python方法:

@zerorpc.stream
def PublishWhaterver(self, some_args):
    yield "love"
    yield "stack"
    yield "overflow"
以下是节点调用:

export const tryStream = () => {
      connectedZerorpcClient.invoke('PublishWhatever', (error, res, more) => {
      console.log('STREAM', res, more);
  });
};
这段代码将记录“流爱”,然后什么也不做

下面是我的问题:

  • 在Python服务器代码中,我是否应该调用带有相关参数的
    PublishWhatever
    ,以便生成附加值
  • 在节点客户机中,当有更多数据时,我是否应该调用一些递归函数
我试图实现的是一个发布/订阅系统,但目前的实现似乎只存在于Python服务器和Python客户端,没有节点示例


主页上的示例和测试也不相关,它显示了如何在调用
invoke
方法时对已经存在的数组进行流式处理。这里的消息是在一些繁重的计算过程中生成的,我希望服务器能够告诉客户机“这里,一些数据准备好了”,并且永远不会断开连接。

ZeroRPC
积极宣传,它正在使用自己的python实现代码作为工作原理的自我文档。换言之,没有人花费如此多的精力来发布一个以用户为中心的、以学习过程为中心的文档

无论如何,试着遵守ZeroRPC描述中的几个“可见”语句

@zerorpc.stream
def PublishWhaterver(self, some_args):
    yield ( "love", "stack", "overflow", ) # one, tuple-wrapped result-container

嗨,谢谢你的回答。我终于让它工作了。它也适用于infinite generator,您可以通过Github链接了解更多信息。我仍然对线程处理的数据有异议,我很难从无限队列中产生值,但这是一个不同的问题,所以我接受你们的答案。