3
try:
    serial_tx = bcl.sendrawtransaction(tx)
except:
    raise
    ''other stuff''

The tx in the parenthesis is a raw transaction that is about to be broadcast to the network. This was the result -

Internal Server Error: /blockscript/0d82f8c8f85ed2b8226dd98ad967c81b00000000000074cfc81b5e3cfdef19975408ef2c2d9976160c69dd2057505d5a/
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 114, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/media/derrend/data/Development/projectone/pro1/views.py", line 1012, in blockscript
    process_rec(tx, L_dct=L_dct, W_dct=W_dct)
  File "/media/derrend/data/Development/projectone/pro1/views.py", line 494, in process_rec
    serial_tx = bcl.sendrawtransaction(tx)
  File "/usr/local/lib/python2.7/dist-packages/python_bitcoinlib-0.2_SNAPSHOT-py2.7.egg/bitcoin/rpc.py", line 403, in sendrawtransaction
    r = self._call('sendrawtransaction', hextx)
  File "/usr/local/lib/python2.7/dist-packages/python_bitcoinlib-0.2_SNAPSHOT-py2.7.egg/bitcoin/rpc.py", line 163, in _call
    'Content-type': 'application/json'})
  File "/usr/lib/python2.7/httplib.py", line 973, in request
    self._send_request(method, url, body, headers)
  File "/usr/lib/python2.7/httplib.py", line 1001, in _send_request
    self.putrequest(method, url, **skips)
  File "/usr/lib/python2.7/httplib.py", line 871, in putrequest
    raise CannotSendRequest()
CannotSendRequest

Thanks in advance :)

EDIT:

I originally shortened the error for the sake of the forum but i have updated it with the full error output now. Thanks again :)

EDIT2:

I just saw that there is a raise in the try statement which I have added to the main post above. Usually the error reported by this is that 'raise cannot be None' or something to that effect but that is not what I'm seeing this time. I'll mention in though i case it is reinvent in some way.

derrend
  • 4,176
  • 4
  • 27
  • 40
  • It doesn't look like the error is actually happening in `sendrawtransaction`, according to the traceback. Also you should be using `except CannotSendRequest`, not catching everything. – TheSoundDefense Aug 08 '14 at 01:27
  • @TheSoundDefense thanks for the input, I'm logging failed transactions in a database for reference later which is why I'm catching everything. Not the most elegant of code I know ;) – derrend Aug 08 '14 at 01:41

1 Answers1

2

raise on its own re-raises a caught exception, preserving its stack trace. If you don’t want the exception to be propagated, remove the raise.

What you describe in your question only occurs when using a bare raise when there is no exception being handled, and only in Python 2:

Usually the error reported by this is that 'raise cannot be None' or something to that effect

the exact error being:

TypeError: exceptions must be old-style classes or derived from BaseException, not NoneTyp e

. In Python 3, it’s more specific:

RuntimeError: No active exception to reraise

… but again, that should never apply in an except block.

Ry-
  • 218,210
  • 55
  • 464
  • 476