0%

Python RPyC

RPyC

Server

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import time
from pickle import dumps
from pprint import pprint

from ctpspot_client import get_static_data
from rpyc import Service
from rpyc.utils.server import ThreadedServer

from get_server_ip import get_host_ip

static_data = get_static_data()
pkl_static_data = dumps(static_data)


class TimeService(Service):
# 对于服务端来说, 只有以"exposed_"打头的方法才能被客户端调用,所以要提供给客户端的方法都得加"exposed_"
def exposed_get_time(self):
return time.ctime() # time模块中的一个内置方法

def exposed_get_static_data(self):
return pkl_static_data


if __name__ == "__main__":
host_ip = get_host_ip()
pprint(host_ip)

s = ThreadedServer(service=TimeService, port=15001, auto_register=False)
s.start()

Client

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from pickle import loads
import rpyc
from pprint import pprint

conn = rpyc.connect('192.168.1.90',15001)
#调用服务器端的方法,格式为:conn.root.xxx。xxx代表服务器端的方法名
# get_time是服务端的那个以"exposed_"开头的方法
result = conn.root.get_time()
print(result)

result = conn.root.get_static_data()
data = loads(result)
pprint(data)

conn.close()

Todo

  • rpyc的默认格式如何转换解析,去掉使用pickle进行序列化和反序列化这一步骤