When hacking JSON-RPC calls together for bitcoin, in python, a common solution appears to be using python-jsonrpc. This choice is less than optimal, for [at least] two reasons: (1) no way to use Decimal with JSON values, as is required in monetary software, and (2) does not support HTTP/1.1 persistent connections.
So, I have created the python AuthServiceProxy class specifically for bitcoin users, based on the usage model of python-jsonrpc:
http://yyz.us/bitcoin/authproxy.pyThis creates a python object whose methods are the JSON-RPC method calls. Example:
import authproxy
import pprint
BITCOINRPC = 'http://myusername:sekritpass@127.0.0.1:8332/'
pp = pprint.PrettyPrinter(indent=4)
bitcoin = authproxy.AuthServiceProxy(BITCOINRPC)
data = bitcoin.getwork() # call bitcoin 'getwork' RPC
pp.pprint(data)
data = bitcoin.getinfo() # call bitcoin 'getinfo' RPC
pp.pprint(data)
This should be all that is needed for python programmers to use bitcoin's unique flavor of JSON-RPC over http or https.
In the latter 'getinfo' case, you can see that Decimal values are properly returned, rather than floats, as recently discussed in
this thread:
{ 'balance': Decimal('1.10000000'),
'blocks': 116260,
'connections': 48,
'difficulty': Decimal('68978.89245792'),
'errors': '',
'generate': False,
'genproclimit': 1,
'hashespersec': 0,
'keypoololdest': 1296778330,
'paytxfee': Decimal('0.01000000'),
'proxy': '',
'testnet': False,
'version': 32100}