jsonrpc_test.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. import jsonrpclib
  2. from jsonrpclib.SimpleJSONRPCServer import SimpleJSONRPCServer
  3. import threading
  4. import time
  5. SERVER_ADDR = ("localhost", 7000)
  6. class JSONRPCServer:
  7. def __init__(self):
  8. self.server = SimpleJSONRPCServer(SERVER_ADDR)
  9. self.service = ExampleAggregateService()
  10. self.server.register_instance(self.service, allow_dotted_names=True)
  11. self.server.register_function(self.service.sumation, 'sum')
  12. self.server.register_function(self.service.sumation, 'notify_sum')
  13. self.server.register_function(self.service.sumation, 'namespace.sum')
  14. self.thread = threading.Thread(target=self.server.serve_forever)
  15. self.thread.start()
  16. def _wait_for_rpc_start(self):
  17. rpc = jsonrpclib.Server("http://{0}:{1}".format(SERVER_ADDR[0], SERVER_ADDR[1]))
  18. while True:
  19. try:
  20. if rpc.ping():
  21. print("Ping JSONRPCServer successfull")
  22. return
  23. except:
  24. pass
  25. time.sleep(1)
  26. def stop(self):
  27. self.server.shutdown()
  28. class JSONRPCClient:
  29. def __init__(self):
  30. # self.client = jsonrpclib.Server("http://{0}:{1}".format(SERVER_ADDR[0], SERVER_ADDR[1]))
  31. self.client = jsonrpclib.Server("http://{0}:{1}".format("192.168.31.226", 888))
  32. # self.thread = threading.Thread(target=self.test)
  33. # self.thread.start()
  34. def test(self):
  35. # while True:
  36. # # print(self.client.get_device_info())
  37. # # self.client.get_changes()
  38. # self.client.get_changes()
  39. # print(jsonrpclib.history.request)
  40. # print(jsonrpclib.history.response)
  41. # time.sleep(3)
  42. self.client.get_changes()
  43. # self.client.get_opc_config()
  44. print(jsonrpclib.history.request)
  45. print(jsonrpclib.history.response)
  46. class ExampleService:
  47. @staticmethod
  48. def add(x, y):
  49. return x + y
  50. @staticmethod
  51. def sumation(*args):
  52. return sum(args)
  53. @staticmethod
  54. def get_data():
  55. return ['hello', 5]
  56. def ping():
  57. return True
  58. class ExampleAggregateService(ExampleService):
  59. def __init__(self):
  60. self.sub_service = ExampleService()
  61. # server = JSONRPCServer()
  62. client = JSONRPCClient()
  63. client.test()
  64. # print(client.ping())