Tiempos de espera de la interfaz bitcoind JSON-RPC en pruebas unitarias

Estoy ejecutando pruebas unitarias contra bitcoind que realizan solicitudes JSON-RPC a una tasa alta. Las fallas aleatorias son un problema. Por ejemplo, si tiene algo como esto en los registros de printconsole:

ThreadRPCServer method=gettransaction
ThreadRPCServer method=gettransaction
ThreadRPCServer method=gettransaction
ThreadRPCServer method=gettransaction
....
ThreadRPCServer method=gettransaction
ThreadRPCServer method=gettransaction
sending: inv (37 bytes)
ThreadRPCServer method=gettransaction
ThreadRPCServer method=listtransactions
sending: inv (37 bytes)

Empiezas a recibir:

synced with network?".format(name)) from e
cryptoassets.core.backend.bitcoind.BitcoindJSONError: Got timeout when doing bitcoin RPC call listtransactions. 

He intentado reutilizar la conexión HTTP y no reutilizar la conexión HTTP con varios resultados.

¿Hay algún fruto al alcance de la mano para hacer que la bitcoindinterfaz de RPC sea más estable (aumentar los hilos, la concurrencia, etc.?)

Estoy usando la siguiente implementación de Python JSON-RPC:

https://github.com/jgarzik/python-bitcoinrpc/blob/master/bitcoinrpc/authproxy.py

ACTUALIZACIÓN: Parece que la llamada problemática podría ser listtransactions. Cuando se llama al mismo tiempo desde la línea de comando, curltampoco hay respuesta:

[~]% curl --user foo:bar --data-binary '{"id":"t0", "method": "listtransactions", "params": ["cryptoassets"] }' http://127.0.0.1:8332/ |python -m json.tool
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:--100    70    0     0  100    70      0     58  
rpcthreads=64parece solucionar el problema, pero no explica lo que está sucediendo.

Respuestas (1)

Usé BitcoinLib para realizar 15.000 listtransactionsllamadas consecutivas y el resultado fue:

0 timeouts
Fastest response: 0.1133479 sec
Slowest response: 0.6475277 sec

bitcoindse inició con los parámetros predeterminados y recibió bloques durante la prueba.

ingrese la descripción de la imagen aquí

¡Muchas gracias! Seguiré investigando qué hace que bitcoind se vuelva loco. Intentaré hacer un script bash para repetir el problema. Tal vez sea el patrón de llamadas realizadas.
@MikkoOhtamaa aquí está la esencia de la prueba anterior: gist.github.com/GeorgeKimionis/7532fe23a5ad74c9c628
@MikkoOhtamaa, ¿alguna vez te diste cuenta de esto?
Sí. Dejó de usar Bitcoin hace siete años. Le sugiero que explore algunas cadenas de bloques modernas.