使用ZeroRPC进行流式传输

时间:2018-03-12 17:39:01

标签: asynchronous zeromq publish-subscribe zerorpc

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

这是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);
  });
};

此代码将记录" STREAM love",然后什么都不做。

所以这是我的问题:

  • 在Python服务器代码中,我是否应该使用相关的args调用PublishWhatever以便它产生额外的值?
  • 在Node客户端,当有更多数据时,我应该调用一些递归函数吗?

我想要实现的是Pub / Sub系统,但是现在实现似乎只存在于Python服务器和Python客户端,没有Node示例。

主页面上的示例和测试也不相关,它显示了在调用invoke方法时如何流式传输已存在的数组。这些消息是在一些繁重的计算过程中生成的,我想要服务器能够告诉客户端"这里,一些数据准备好了#34;永远不要断开。

1 个答案:

答案 0 :(得分:2)

嗯, ZeroRPC 积极推广,它正在使用自己的python实现代码作为自我记录工作的方式。换句话说,没有人花费这么多额外的努力来发布以用户为中心的,而不是以学习过程为中心的文档。

无论如何,尽量服从少数"可见" ZeroRPC描述中的陈述。

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