我已经创建了一个RPyC服务器。连接正常,我所有公开的方法都正常。现在我想从客户端关闭服务器。这可能吗?安全不是问题,因为我不担心恶意连接关闭服务器。
其开头为(阻塞):
from rpyc import ThreadPoolServer
from service import MyService
t = ThreadPoolServer(MyService(), port=56565)
t.start()
现在我只需要关闭它。我还没有找到任何关于停止服务器的文档。
我已经创建了一个RPyC服务器。连接正常,我所有公开的方法都正常。现在我想从客户端关闭服务器。这可能吗?安全不是问题,因为我不担心恶意连接关闭服务器。
其开头为(阻塞):
from rpyc import ThreadPoolServer
from service import MyService
t = ThreadPoolServer(MyService(), port=56565)
t.start()
现在我只需要关闭它。我还没有找到任何关于停止服务器的文档。
2条答案
按热度按时间chhqkbe11#
您可以向
Service
类添加以下方法:这将使服务获得自己的PID并发送SIGTERM给它自己。也许有一个更好的方法隐藏在API的某个黑暗角落里,但我没有找到更好的方法。
如果要在线程终止之前进行清理,可以设置退出陷阱:
qojgxg4l2#
如果有人感兴趣的话,我找到了另一种方法,我只是在全局范围内创建服务器对象,然后添加一个公开的方法来关闭它。
在客户端,由于连接被远程关闭,你会得到一个EOF错误,所以最好能捕捉到它。
**EDIT:**我需要能够动态地指定服务器。所以我提供了这个(它更好吗?我不知道,但它工作得很好。不过要小心,如果你有多个服务器运行这个服务:事情可能变得怪异):
**PS:**使用Asynchronous Operations可能可以避免EOF错误