jgarzik / jgarzik/python-bitcoinrpc
bitcoinrpc.authproxy.JSONRPCException: -342: non-JSON HTTP response with '500 Internal Server Error' from server
- 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