jgarzik / jgarzik/python-bitcoinrpc

bitcoinrpc.authproxy.JSONRPCException: -342: non-JSON HTTP response with '500 Internal Server Error' from server

Aperta
#98 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Python
Stelle
663
Fork
300
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

Hi, I'm using bitcoinrpc to fetch data using multiprocessing in python (20-40 processes at a time).

I'm frequently getting these errors:

```
exception catched by line 107: Traceback (most recent call last):
File "mainF_v2_4_blocks.py", line 66, in block_processing
block_hash = rpc1.getblockhash(block_height)
File "/home/user/btc_rpc_1/btc_rpc_venv/lib64/python3.6/site-packages/bitcoinrpc/authproxy.py", line 139, in __call__
response = self._get_response()
File "/home/user/btc_rpc_1/btc_rpc_venv/lib64/python3.6/site-packages/bitcoinrpc/authproxy.py", line 179, in _get_response
http_response = self.__conn.getresponse()
File "/usr/lib64/python3.6/http/client.py", line 1321, in getresponse
raise ResponseNotReady(self.__state)
http.client.ResponseNotReady: Request-sent
```

```
exception catched by line 107: Traceback (most recent call last):
File "mainF_v2_4_blocks.py", line 66, in block_processing
block_hash = rpc1.getblockhash(block_height)
File "/home/user/btc_rpc_1/btc_rpc_venv/lib64/python3.6/site-packages/bitcoinrpc/authproxy.py", line 136, in __call__
'Content-type': 'application/json'})
File "/usr/lib64/python3.6/http/client.py", line 1239, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/usr/lib64/python3.6/http/client.py", line 1250, in _send_request
self.putrequest(method, url, **skips)
File "/usr/lib64/python3.6/http/client.py", line 1108, in putrequest
raise CannotSendRequest(self.__state)
http.client.CannotSendRequest: Request-sent

```

```
exception catched by line 107: Traceback (most recent call last):
File "mainF_v2_4_blocks.py", line 67, in block_processing
block = [json.loads(json.dumps(rpc1.getblock(block_hash), use_decimal=True))]
File "/home/user/btc_rpc_1/btc_rpc_venv/lib64/python3.6/site-packages/bitcoinrpc/authproxy.py", line 139, in __call__
response = self._get_response()
File "/home/user/btc_rpc_1/btc_rpc_venv/lib64/python3.6/site-packages/bitcoinrpc/authproxy.py", line 187, in _get_response
'code': -342, 'message': 'non-JSON HTTP response with \'%i %s\' from server' % (http_response.status, http_response.reason)})
bitcoinrpc.authproxy.JSONRPCException: -342: non-JSON HTTP response with '500 Internal Server Error' from server
```

Here is `timeout` setting my connection string:
```
rpc1 = AuthServiceProxy( "http://%s:%s@%s:%s"%(rpc_user, rpc_password, rpc_host, rpc_port), timeout=86400)
```
and entry in `bitcoin.conf`:
```
rpcthreads=400
rpcworkqueue=1600
rpcservertimeout=7200
```

What can be the cause the above error? Any suggestions how to handle it? or do I need to change timeout settings?

Thanks.

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Start with bitcoinrpc/authproxy.py, especially __call__ and _get_response, using the reported multiprocessing workload and the three Python HTTP exceptions as the reproduction case. Determine whether the connection errors and HTTP 500 response are caused by concurrent connection use or server limits, then document a verified handling or configuration change and tests showing the failures are addressed.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
python
Ambito
api, backend
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.