Rpyc在两个客户端与一个服务器之间的接口实现

2 投票
1 回答
1201 浏览
提问于 2025-04-18 02:15

现在我有一个 rpyc 客户端 A,它负责抓取数据。当它找到特定的数据时,会把这些数据发送到我的 rpyc 服务器,然后服务器会把数据存储起来。假设我还有 rpyc 客户端 B、C 和 D 也连接到了我的 rpyc 服务器。我该怎么做才能让服务器直接把这些数据发送给客户端 C 呢?

1 个回答

2

因为 rpyc 是对称的,所以客户端可以传递一些回调函数,让服务器来调用。这些回调函数会在客户端的进程中执行。这可能是实现你想要功能的最简单、最干净的方法。

所以你的服务器需要提供一个新的 register_callback(client_callback) 方法,这个方法会把回调函数存储在一个列表里。然后,每当接收到新数据时,你只需要调用所有存储的回调函数就可以了。

你还需要处理一种情况,就是有的客户端已经断开连接,但它之前注册了回调函数。处理这个问题的方法很简单,只需要在调用回调函数时加上适当的 try/except 语句(不过我不记得具体需要捕获什么样的异常类型)。

撰写回答