jgarzik / python-bitcoinrpc

Python interface to bitcoin's JSON-RPC API
GNU Lesser General Public License v2.1
644 stars 304 forks source link

RPC connection note closed #76

Open BeOleg opened 6 years ago

BeOleg commented 6 years ago

Hi, I have many threads in my wallet after using your code. Is it possible to call connection.close somewhere? Or should I use the more pythonic with?

My code is as follows:

class BaseRpcClient(BaseApiClient):

    def __init__(self):
        super(BaseRpcClient, self).__init__()
        self.api_cache = {}
        self.rpc_endpoint = None

    def get_api(self, node):
        self.rpc_endpoint = RpcMapper.get_rpc_addr(node)
        if self.rpc_endpoint not in self.api_cache:
            self.api_cache[self.rpc_endpoint] = \
                AuthServiceProxy(self.rpc_endpoint)
        self.api = self.api_cache[self.rpc_endpoint]
        return self.api

    def call_api(self, node, endpoint, *args):
        api = self.get_api(node)
        try:
            fn = getattr(api, endpoint)
            return fn(*args)
        except JSONRPCException as e:
            self.logger.error('JSON RPC ERROR HOST {} ERROR {}'
                              .format(self.rpc_endpoint, str(e)))