当前位置: 首页 > 工具软件 > RPyC > 使用案例 >

rpyc简介

柏阳炎
2023-12-01

一、rpyc的基本概念

        RPC(Remote Procedure Call)是远程程序调用,RPYC是一个Python库,可以实现在不同的机器上运行的Python程序之间的通信。

二、rpyc安装

pip install rpyc

三、rpyc的使用

1,基本用法

服务器端代码

import rpyc
from rpyc.utils.server import ThreadedServer, OneShotServer


class MyServer(rpyc.Service):
    def exposed_myadd(self, x, y):
        print(x+y)
        return 'OK'

if __name__ == '__main__':
    while True:
        t = ThreadedServer(MyServer, port=18862)
        t.start()

ThreadServer中增加配置protocol_config={'allow_public_attrs': True},可以运行服务器中的方法不以exposed_开头

ThreadedServer(MyServer, port=18862, protocol_config={'allow_public_attrs': True})

客户端代码

import rpyc

if __name__ =='__main__':
    conn = rpyc.connect('192.168.31.100', 18862)
    res = conn.root.myadd(1,2)
    print(res)

2, 设置服务器同一时间只允许1个用户连接

服务器(使用OneShotServer方法)

import rpyc
from rpyc.utils.server import ThreadedServer, OneShotServer


class MyServer(rpyc.Service):
    def exposed_myadd(self, x, y):
        print(x+y)
        time.sleep(2)
        return x+y

if __name__ == '__main__':
    while True:
        t = OneShotServer(MyServer, port=18862)
        t.start()

客户端

import rpyc

if __name__ =='__main__':

    conn = rpyc.connect('192.168.31.100', 18862)
    try:
        res = conn.root.myadd(3,2)
        print(res)
    except:
        print('服务器忙')

客户端 异步调用服务器方法

import rpyc

if __name__ =='__main__':

    conn = rpyc.connect('192.168.31.100', 18862)

    add1 = rpyc.async_(conn.root.myadd) # 异步调用
    res = add1(1,5)
    print(res.value)

 类似资料: