Thứ Ba, 17 tháng 9, 2019

Python : Sử dụng module 'python3-jsonrpc'

Trong module 'python3-jsonrpc' vừa sửa và cài đặt từ mã nguồn
https://github.com/wheeler-microfluidics/application_repository.jsonrpc

Tập tin proxy.py được sửa lại cho python 3 như sau :


import urllib.request, urllib.parse, urllib.error

from jsonrpc.json import dumps, loads


class JSONRPCException(Exception):

    def __init__(self, rpcError):

        Exception.__init__(self)

        self.error = rpcError
        

class ServiceProxy(object):

    def __init__(self, serviceURL, serviceName=None):

        self.__serviceURL = serviceURL

        self.__serviceName = serviceName


    def __getattr__(self, name):

        if self.__serviceName != None:

            name = "%s.%s" % (self.__serviceName, name)

        return ServiceProxy(self.__serviceURL, name)


    def __call__(self, *args):

         postdata = dumps({"method": self.__serviceName, 'params': args, 'id':'jsonrpc'})

         postdata = postdata.encode('utf-8')

         respdata = urllib.request.urlopen(self.__serviceURL, postdata).read()

         resp = loads(respdata.decode('utf-8'))

         if 'error' in resp:

             raise JSONRPCException(resp['error'])

         else:

             return resp['result']        


Giả dụ, ta có phương thức get_status ở địa chỉ url "http://localhost/services/jsonrpc", sử dụng proxy gọi phương thức này như sau :

>>> from jsonrpc import ServiceProxy

>>> proxy = ServiceProxy("http://localhost/services/jsonrpc")

>>> print("Server status :", proxy.get_status())


Chi tiết dùng module này xem tại đây :

https://www.jsonrpc.org/archive_json-rpc.org/python-json-rpc.html


Không có nhận xét nào:

Đăng nhận xét