Биткойн RPC соединение - PullRequest
       18

Биткойн RPC соединение

0 голосов
/ 18 декабря 2018

Я пытаюсь вставить биткойн-транзакции в MongoDB, используя python3.Ниже приведен мой код:

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

Я проверил биткойн-соединение RPC, он подключен.
block_hashes = rpc_connection.batch_(commands) эта строка кода дает ошибку,Может кто-нибудь сказать мне, что не так?

1 Ответ

0 голосов
/ 20 декабря 2018

Я нашел решение.После внесения изменений в конфигурационный файл биткойна, я просто уменьшаю диапазон записей, которые нужно вставить.Сервер RPC не может обрабатывать загрузки данных одновременно.В противном случае возникает проблема сбоя сервера и сбой соединения.Максимум 100 записей вставляются за раз или меньше.И еще одна вещь, продолжайте перезапускать RPC-сервер bitcoind с помощью команд остановки и запуска, приведенных ниже:

sudo killall bitcoind
bitcoind -daemon -rpcuser=xxx -rpcpassword=xxx -txindex -rpcallowip=youripaddress
...