Python - Máy chủ JSON RPC

JSON hoặc JavaScript Object Notation là một định dạng trao đổi dữ liệu nhẹ. Nó rất dễ dàng cho con người để đọc và viết. Nó rất dễ dàng để máy móc phân tích cú pháp và tạo ra. Lệnh gọi RPC được thực hiện dựa trên JSON có thể gửi dữ liệu theo cách nhỏ gọn và hiệu quả hơn nhiều so với lệnh gọi RPC dựa trên XML thông thường. Mô-đun pythonjsonrpclib có thể tạo một máy chủ và máy khách dựa trên JSON đơn giản.

Thí dụ

Trong ví dụ dưới đây, chúng tôi tạo một máy chủ JSON đơn giản và tạo một hàm trong đó. Hàm này chia một danh sách lớn hơn thành các danh sách nhỏ hơn đề cập đến độ dài của đối số cũng như chính đối số.

# server program
from jsonrpclib.SimpleJSONRPCServer import SimpleJSONRPCServer
def findlen(*args):
	res = []
	for arg in args:
		try:
			lenval = len(arg)
		except TypeError:
			lenval = None
		res.append((lenval, arg))
	return res
def main():
	server = SimpleJSONRPCServer(('localhost', 1006))
	server.register_function(findlen)
	print("Start server")
	server.serve_forever()
if __name__ == '__main__':  
    main()
# Call by client
from jsonrpclib import Server
def main():
    conn = Server('http://localhost:1006')
    print(conn.findlen(('a','x','d','z'), 11, {'Mt. Abu': 1602, 'Mt. Nanda': 3001,'Mt. Kirubu': 102, 'Mt.Nish': 5710}))
if __name__ == '__main__':
    main()

Khi chúng tôi chạy chương trình trên, chúng tôi nhận được kết quả sau:

[[4, [u'a', u'x', u'd', u'z']], [None, 11], [4, {u'Mt. Abu': 1602, u'Mt. Kirubu': 102, u'Mt. Nanda': 3001, u'Mt.Nish': 5710}]]