rpyc简介

一、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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值