Skip to main content

Enhanced version python-bitconrpc using requests sessions.

Project description

GitHub Release GitHub Tags

This project further improves python-bitcoinrpc by making use of the requests module.

requests replaces plain http.client and httplib, respectively.

It's basically a mixture of the projects python-bitcoinrpc and python-monerorpc.

The first version to contain the above change is tag v0.4.0.


AuthServiceProxy is an improved version of python-jsonrpc.

It includes the following generic improvements:

  • HTTP connections persist for the life of the AuthServiceProxy object
  • sends protocol 'version', per JSON-RPC 1.1
  • sends proper, incrementing 'id'
  • uses standard Python json lib
  • can optionally log all RPC calls and results
  • JSON-2.0 batch support

It also includes the following bitcoin-specific details:

  • sends Basic HTTP authentication headers
  • parses all JSON numbers that look like floats as Decimal, and serializes Decimal values to JSON-RPC connections.

Installation:

  • change the first line of setup.py to point to the directory of your installation of python 2.*
  • run setup.py

Note: This will only install bitcoinrpc. If you also want to install jsonrpc to preserve backwards compatibility, you have to replace 'bitcoinrpc' with 'jsonrpc' in setup.py and run it again.

Example usage:

from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException

# rpc_user and rpc_password are set in the bitcoin.conf file
rpc_connection = AuthServiceProxy("http://%s:%s@127.0.0.1:8332"%(rpc_user, rpc_password))
best_block_hash = rpc_connection.getbestblockhash()
print(rpc_connection.getblock(best_block_hash))

# batch support : print timestamps of blocks 0 to 99 in 2 RPC round-trips:
commands = [ [ "getblockhash", height] for height in range(100) ]
block_hashes = rpc_connection.batch_(commands)
blocks = rpc_connection.batch_([ [ "getblock", h ] for h in block_hashes ])
block_times = [ block["time"] for block in blocks ]
print(block_times)

Logging all RPC calls to stderr:

from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
import logging

logging.basicConfig()
logging.getLogger("BitcoinRPC").setLevel(logging.DEBUG)

rpc_connection = AuthServiceProxy("http://%s:%s@127.0.0.1:8332"%(rpc_user, rpc_password))
print(rpc_connection.getinfo())

Produces output on stderr like:

DEBUG:BitcoinRPC:-1-> getinfo []
DEBUG:BitcoinRPC:<-1- {"connections": 8, ...etc }

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python-requests-bitcoinrpc-0.4.0.tar.gz (5.1 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file python-requests-bitcoinrpc-0.4.0.tar.gz.

File metadata

  • Download URL: python-requests-bitcoinrpc-0.4.0.tar.gz
  • Upload date:
  • Size: 5.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.7.8

File hashes

Hashes for python-requests-bitcoinrpc-0.4.0.tar.gz
Algorithm Hash digest
SHA256 7e47f08b0b0d1dfdbcf415a8dea8b662773090d8c91caadfb44538887b7efcfd
MD5 5dedb90317d64d068a96497da8f79fc9
BLAKE2b-256 704e4ee781ad3c977cce4dc85460911193c02d381ab0417f39d8fd92305d9e40

See more details on using hashes here.

File details

Details for the file python_requests_bitcoinrpc-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: python_requests_bitcoinrpc-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 5.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.7.8

File hashes

Hashes for python_requests_bitcoinrpc-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f6d887bea694386296e1e1eaf77f3fc6d8631c66b15df3491d88be15b1eda1ce
MD5 665fb9e3b76b2a3356dfa9e379f20416
BLAKE2b-256 73d90eebd42314c90a484bb0a4161933330c26af641246956d550f5c14a77bf7

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page