Insert BTC blocks and transactions in mongodb
Insert BTC blocks and transactions in mongodb
I am trying to insert bitcoin transactions into MongoDB using python3. Below is my code :
import pymongo import sys import json import time from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException rpc_connection = AuthServiceProxy("http://xxx:xxx@ipaddress:port") def getBTCTransaction(rangeinit,rangefinish): myclient = pymongo.MongoClient("mongodb://ipaddress:port") mydb = myclient["ETHCollection"] mycol = mydb["BTCtransaction"] addresses = [] txa = [] commands = [ [ "getblockhash", height] for height in range(rangeinit,rangefinish) ] #print(commands) block_hashes = rpc_connection.batch_(commands) #print(block_hashes) blocks = rpc_connection.batch_([ [ "getblock", h ] for h in block_hashes ]) #print(blocks) for txpre in blocks: #print(txpre) for txs in txpre["tx"]: txa.append(txs) trans = conTransaction(txa) # insert BTC transactions for t in trans: i = 0 for x in t["vout"]: t["vout"][i]["value"] = int(t["vout"][i]["value"]*100000000) i = i+1 #print(t) try: print(t) mycol.insert(t) except: print("not unique") def conTransaction(txa): #print(txa) try: trans = rpc_connection.batch_([ [ "getrawtransaction", tx ,1] for tx in txa ]) return trans #print(trans) except: print("connect error") time.sleep(5) return conTransaction(txa) if __name__ == '__main__': if sys.argv[1] == "4": num=int(sys.argv[2]) for n in range(0,10000): print("Block:",num+n*1) getBTCTransaction(num+n*1,num+(n+1)*1)
After inserting only one block's transaction instead of continuing for the next block it is giving an error:
Block: 459722 Traceback (most recent call last): File "Test06.py", line 342, in <module> getBTCTransaction(num+n*1,num+(n+1)*1) File "Test06.py", line 252, in getBTCTransaction block_hashes = rpc_connection.batch_(commands) File "/home/administrator/.local/lib/python3.6/site-packages/bitcoinrpc/authproxy.py", line 167, in batch_ responses = self._get_response() File "/home/administrator/.local/lib/python3.6/site-packages/bitcoinrpc/authproxy.py", line 179, in _get_response http_response = self.__conn.getresponse() File "/usr/lib/python3.6/http/client.py", line 1331, in getresponse response.begin() File "/usr/lib/python3.6/http/client.py", line 297, in begin version, status, reason = self._read_status() File "/usr/lib/python3.6/http/client.py", line 266, in _read_status raise RemoteDisconnected("Remote end closed connection without" http.client.RemoteDisconnected: Remote end closed connection without response
Can somebody please help me with this error. Why connection is getting closed?
http://bit.ly/2BGVyiI
Comments
Post a Comment