Python - Serveur JSON RPC

La notation d'objets JSON ou JavaScript est un format d'échange de données léger. Il est facile pour les humains de lire et d'écrire. Il est facile pour les machines d'analyser et de générer. L'appel RPC basé sur JSON est capable d'envoyer des données de manière beaucoup plus compacte et efficace que l'appel RPC basé sur XML normal. Le module pythonjsonrpclib est capable de créer un serveur et un client JSON simples.

Exemple

Dans l'exemple ci-dessous, nous créons un serveur JSON simple et y créons une fonction. Cette fonction divise une liste plus grande en listes plus petites mentionnant la longueur de l'argument ainsi que l'argument lui-même.

# 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()

Lorsque nous exécutons le programme ci-dessus, nous obtenons la sortie suivante -

[[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}]]