比特币 RPC 连接
Bitcoin RPC connection
我正在尝试使用 python3 将比特币交易插入 MongoDB。下面是我的代码:
import pymongo
import sys
import json
import time
from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
rpc_connection = AuthServiceProxy("http://xxx:xxx@ipaddress:port")
def getTransaction():
addresses = []
txa = []
commands = [ [ "getblockhash", height] for height in range(400000,550000) ]
#print(commands)
block_hashes = rpc_connection.batch_(commands)
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)
return trans
我收到以下错误:
Traceback (most recent call last):
File "/usr/lib/python3.6/threading.py", line 916, in _bootstrap_inner
self.run()
File "/usr/lib/python3.6/threading.py", line 864, in run
self._target(*self._args, **self._kwargs)
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 165, in batch_
'Content-type': 'application/json'})
File "/usr/lib/python3.6/http/client.py", line 1239, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/usr/lib/python3.6/http/client.py", line 1285, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "/usr/lib/python3.6/http/client.py", line 1234, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "/usr/lib/python3.6/http/client.py", line 1065, in _send_output
self.send(chunk)
File "/usr/lib/python3.6/http/client.py", line 986, in send
self.sock.sendall(data)
BrokenPipeError: [Errno 32] Broken pipe
我检查了 bitcoind rpc 连接,它已连接。
block_hashes = rpc_connection.batch_(commands)
此代码行出错。谁能告诉我怎么了?
我找到了解决方案。在对比特币配置文件进行更改后,我只是减少了要插入的记录范围。 RPC 服务器无法同时处理大量数据。否则,会出现服务器宕机问题,连接失败。一次最多插入 100 条记录或少于 100 条记录。还有一件事,通过下面给出的停止和启动命令继续重启 bitcoind RPC 服务器:
sudo killall bitcoind
bitcoind -daemon -rpcuser=xxx -rpcpassword=xxx -txindex -rpcallowip=youripaddress
我正在尝试使用 python3 将比特币交易插入 MongoDB。下面是我的代码:
import pymongo
import sys
import json
import time
from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
rpc_connection = AuthServiceProxy("http://xxx:xxx@ipaddress:port")
def getTransaction():
addresses = []
txa = []
commands = [ [ "getblockhash", height] for height in range(400000,550000) ]
#print(commands)
block_hashes = rpc_connection.batch_(commands)
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)
return trans
我收到以下错误:
Traceback (most recent call last):
File "/usr/lib/python3.6/threading.py", line 916, in _bootstrap_inner
self.run()
File "/usr/lib/python3.6/threading.py", line 864, in run
self._target(*self._args, **self._kwargs)
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 165, in batch_
'Content-type': 'application/json'})
File "/usr/lib/python3.6/http/client.py", line 1239, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/usr/lib/python3.6/http/client.py", line 1285, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "/usr/lib/python3.6/http/client.py", line 1234, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "/usr/lib/python3.6/http/client.py", line 1065, in _send_output
self.send(chunk)
File "/usr/lib/python3.6/http/client.py", line 986, in send
self.sock.sendall(data)
BrokenPipeError: [Errno 32] Broken pipe
我检查了 bitcoind rpc 连接,它已连接。
block_hashes = rpc_connection.batch_(commands)
此代码行出错。谁能告诉我怎么了?
我找到了解决方案。在对比特币配置文件进行更改后,我只是减少了要插入的记录范围。 RPC 服务器无法同时处理大量数据。否则,会出现服务器宕机问题,连接失败。一次最多插入 100 条记录或少于 100 条记录。还有一件事,通过下面给出的停止和启动命令继续重启 bitcoind RPC 服务器:
sudo killall bitcoind
bitcoind -daemon -rpcuser=xxx -rpcpassword=xxx -txindex -rpcallowip=youripaddress